我是 java 的新手,不知道为什么在运行下面的程序时会出现此错误
程序:这个程序基本上读取第一行输入的N个数,然后扫描每个数字并将其存储在数组arr中并显示它。
N 的范围是:0<N<10^6
输入的数字可以很长,所以我在程序中使用了长数组。
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
public static void main(String[] args) {
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */
Scanner sc = new Scanner(System.in);
long no = sc.nextLong();
if(no > 1000000 || no < 1)
System.exit(0);
long arr[] = new long [(int)no];
for(int i=0;i<(int)no;i++) {
arr[i] = sc.nextLong();
System.out.println(arr[(int)i]);
}
}
}
输入值:here你找到输入值
输出:
运行时错误
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:907)
at java.util.Scanner.next(Scanner.java:1530)
at java.util.Scanner.nextLong(Scanner.java:2265)
at java.util.Scanner.nextLong(Scanner.java:2225)
at Solution.main(Solution.java:23)
其余的输出是 here
最佳答案
您重复调用 nextLong()
,但没有测试是否有下一个 long:
for(int i=0;i<(int)no;i++) {
arr[i] = sc.nextLong();
System.out.println(arr[(int)i]);
}
你需要做这样的事情:
for(int i=0;i<(int)no && sc.hasNextLong();i++) {
arr[i] = sc.nextLong();
System.out.println(arr[(int)i]);
}
关于java - 带有数组的 Java.Util.Scanner 的 NoSuchElementException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34546034/