总数未计算,我不知道如何使用布尔值是有效的抛出异常

问题描述

我必须创建一个程序来接受用户的输入(数字),并且我需要对所有数字求和。如果数字为负,则不计入。我必须使用boolean isValid方法并抛出异常。

public class Assignment
{
    private static int num;
    public static void main(String[] args) throws Exception
    {
        Scanner scn = new Scanner(system.in);
        Assignment a = new Assignment();
        System.out.println(a.isValid(num));             
    }

    public boolean isValid(int num) throws Exception
    {
        boolean isValid = false;
        int sum = 0;
        int i;
        Scanner scn = new Scanner(system.in);
        System.out.println("Enter the number:");
                
        try
        {  
            num =scn.nextInt();
            for(i=0;i<5;i++)
            {
                if (num>0)
                {
                    num=scn.nextInt();
                    sum+=num;
                    i++;
                }
                System.out.println("Enter the number:" +sum);
            }
            return isValid;
        }
        catch (Exception e)
        {
        }
    }

解决方法

到目前为止,我已经了解到boolean isValid()不是用于计算总和,而是用于检查输入的有效性的一件事。意思是,我们需要将每个输入传递给函数,并检查它是否为正数。如果是,则返回true,如果否,则返回false和/或引发异常。 您的main()应该看起来像。

Assignment a = new Assignment();
int size = scn.nextInt(),sum = 0;
try {
     for (int i = 0; i < size; i++) {
         int input = scn.nextInt();
         if (a.isValid(input)) {
             sum += input;
         }
     }
     System.out.println(sum);
}

catch (Exception e) {
      System.out.println(e.getMessage());
}

您的isValid()应该看起来像

if (num < 0)
    throw new Exception("Negative Number");
return true;