我有下面的代码,其中我采取“n”作为数组的大小从用户,为测试目的,我只提供了很少的输入,即n-1输入到程序。我的理解是,程序应该采取n个值从用户和第(n-1)个值,它应该打印零,因为我没有提供任何值,但它抛出了一个错误。
我是一个完全的初学者,因此,任何帮助都将非常感谢。:)
代码:-
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int[] arr=new int[n];
for(int i=0;i<n;i++){
arr[i]=sc.nextInt();
}
for( int i=0; i<n;i++){
System.out.println(arr[i]);
}
}
}
Input Provided:-
4
1
4
2
Expected output:
1
4
2
0
Actual Output:-
Output
[NonZeroExitCode] Your code encountered a runtime error
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:11)
1条答案
按热度按时间fhity93d1#
Scanner.nextInt()
将爆炸,如果没有整数准备从控制台读取。为了获得你想要的行为,你应该在尝试读取它之前检查是否有一个整数准备好读取,如果没有一个准备好读取,就停止阅读。
为此,请替换以下内容:
与
请参见生成所需输出的live demo。