输入字符串的Java异常错误

时间:2017-02-09 14:51:27

标签: java

我是Java编程的初学者。我正在尝试编写一个简单的程序来获取输入的大小,然后是用空格分隔的数字列表来计算总和。

第一个输入正好处于第二个系统显示错误,因为它试图将空白字符串解析为整数。你能帮忙解决我的错误吗?

import java.util.Scanner;
public class InputStringforarray {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        System.out.print(" Enter size of input ");
        int num = scan.nextInt();
        System.out.println("Enter data separated by spaces: ");
        String line = scan.nextLine();
        String[] str = line.split(" ");
        int[] A = new int[num];
         int sum = 0; 
        for (int i = 0; i < num; i++)
             A[i] =Integer.parseInt(str[i]); 
        for (int i = 0; i < num; i++)
             sum = sum + A[i]; 
         System.out.println("Sum is " + sum);

}

}

2 个答案:

答案 0 :(得分:0)

你的程序只有一个错误,你只有一个扫描程序类的扫描对象,你必须制作两个扫描程序类对象一个将有助于获取数组大小,而另一个将有助于获取数组元素。

import java.util.Scanner;
public class InputStringforarray {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
         Scanner scan1 = new Scanner(System.in); // change 1
        System.out.print(" Enter size of input ");
        int num = scan.nextInt();`enter code here`
        System.out.println("Enter data separated by spaces: ");
        String line = scan1.nextLine();// change 2
        String[] str = line.split(" ");
        int[] A = new int[num];
         int sum = 0; 
        for (int i = 0; i < num; i++)
             A[i] =Integer.parseInt(str[i]); 
        for (int i = 0; i < num; i++)
             sum = sum + A[i]; 
         System.out.println("Sum is " + sum);

}

}

答案 1 :(得分:0)

您在代码中出现异常的原因是int num = scan.nextInt();不会在数字后处理换行符。

因此,当使用语句String line = scan.nextLine();时,它会处理换行符,因此会得到一个空字符串""

您可以获取整行并将其解析为Integer,如下所示:

int num = Integer.parseInt(scan.nextLine());

或者您可以使用nextInt()然后使用空白的scan.nextLine()来处理数字后的新行,如下所示:

int num = scan.nextInt();
scan.nextLine();