2017-02-09 91 views
0

我是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); 

} 

} 
+1

在使用next(),nextInt()或其他nextFoo()方法之后,[Scanner正在跳过nextLine())的可能重复(http://stackoverflow.com/questions/13102045/scanner-is-skipping-nextline-after-using -next-nextint-or-other-nextfoo) – Berger

+0

这是否行得通! 'String line = scan.nextLine(); System.out.println(“输入以空格分隔的数据:”); line = scan.nextLine();' –

+1

while'使用'nextInt()'这是常见的问题。解决方案:您必须在第二次输入之前进行一些输入,因为@kiner_shah已完成 –

回答

0

你在你的代码得到一个异常的原因是因为int num = scan.nextInt();不处理,数字之后的换行符。

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

您可以获取整个行并将其解析为整数,如:

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

,或者您可以使用nextInt()去,然后使用空白scan.nextLine()来处理数后的新线,是这样的:

int num = scan.nextInt(); 
scan.nextLine(); 
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); 

} 

} 
相关问题