线程" main"中的例外情况Main.main中的java.lang.NegativeArraySizeException

时间:2017-11-09 07:36:45

标签: java arrays for-loop

无效的输入流不起作用 - 每次我给出一个负月值,它会让我回到这个例外。

代码:

import java.util.Scanner;
public class Main {

    public static void main(String[] args) {


        Scanner input= new Scanner(System.in);
        System.out.println("Enter the number of months :");
        int month = input.nextInt();
        if(month<0)
        {
                System.out.println("Invalid Input");
        }
        int sum = 0;
        int a[] = new int[month];
        System.out.println("Enter the profit of each month in shipment");
        for (int i=0; i<month; i++)
        {
            a[i] = input.nextInt();
            sum = sum+a[i];
        }
        System.out.println("Total profit : "+sum);
    }
}

2 个答案:

答案 0 :(得分:2)

如输入所示,您无法创建负数大小的数组。您正确地检查输入的month,但是当您获得负值时,您不会终止流量。那时returnexit应该可以解决问题。 E.g:

if (month < 0) {
    System.out.println("Invalid Input");
    return; // Here
}

答案 1 :(得分:-1)

或者您可以将else语句与if语句一起使用。

    Scanner input= new Scanner(System.in);
    System.out.println("Enter the number of months :");
    int month = input.nextInt();
    if(month<0)
    {
            System.out.println("Invalid Input");
    }else{
    int sum = 0;
    int a[] = new int[month];
    System.out.println("Enter the profit of each month in shipment");
    for (int i=0; i<month; i++)
    {
        a[i] = input.nextInt();
        sum = sum+a[i];
    }
      System.out.println("Total profit : "+sum);
    }