java - 带有数组的 Java.Util.Scanner 的 NoSuchElementException

标签 java arrays long-integer

我是 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/

相关文章:

java - 我如何从 Intent 中获得额外的(作为 Long 类型)?

JavaFX 不确定进度对话框覆盖

java - Apache Commons StringUtils.repeat() 是如何工作的以及为什么它以这种方式工作?

java - 什么是枚举,它们为什么有用?

javascript - 如何在大型对象数组中乘以某些列/字段?

Java 创建长字符串

java - 简化 Tomcat 7 中的 web.xml 配置

java - 如何循环遍历jtable的所有行

javascript - 如果我不使用 “` 的初始值,为什么会得到 `flattenDeep(...)` TypeError` : `reduce` is not iterable”, ?

c++ - 为什么 long int 不是 100% 准确?