Huxley:java.util.NoSuchElementException:找不到行

时间:2017-09-11 23:34:42

标签: java nosuchelementexception

我在https://www.thehuxley.com提交答案时遇到了问题。当我在Eclipse上运行我的代码时,一切正常,但在Huxley上,我得到了这个:

Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1540)
at HuxleyCode.main(HuxleyCode.java:12)

以下是代码本身:

import java.io.*;
import java.util.*;

public class HuxleyCode {
  public static void main(String args[]) {
    Scanner in = new Scanner(System.in);
    int menor = 0, pos = 0, entradas = 0, temp;

    entradas = in.nextInt();// WATCH OUT THIS LINE
    in = new Scanner(System.in);

    String valores = in.nextLine();

    entradas = 0;
    for (String val : valores.split(" ")) {
        temp = Integer.valueOf(val);

        if (entradas == 0) {
            menor = temp;
        } else if (temp < menor) {
            menor = temp;
            pos = entradas;
        }
        entradas++;
    }

    in.close();
    System.out.println("Menor valor: " + menor);
    System.out.println("Posicao: " + pos);
  }
}

只是为了补充,在我评论的行中#34;观察此行&#34;,如果我删除该行,Scanner忽略nextInt()e跳转到NextLine(),导致此错误:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.valueOf(Integer.java:766)
at HuxleyCode.main(HuxleyCode.java:16)

我的错误在哪里,为什么不对赫胥黎起作用?

预期输入为:

10
1 2 3 4 -5 6 7 8 9 10

输出:

Menor valor: -5
Posicao: 4

1 个答案:

答案 0 :(得分:1)

entradas = in.nextInt();
String valores ="";
while(in.hasNextLine())
    valores = in.nextLine();

问题是nextInt()没有将扫描仪的位置设置为下一行的开头,因此第一次调用将返回空字符串。这在这里有清楚的解释......
Can't use Scanner.nextInt() and Scanner.nextLine() together

有一点需要注意的是,它适用于您,因为您重新初始化了扫描仪,因此强制它从下一行的开头开始。但不幸的是,这对Huxley不起作用,因为他们一次性以编程方式发送输入,并且因丢失对第一个扫描器的引用而全部丢失。

以下也应该有效

entradas = in.nextInt();
String valores = in.nextLine();//Get empty Str & Set pos of Scanner to beginning of next line
valores = in.nextLine();