我是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);
}
}
答案 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();