赫胥黎:java.util.NoSuchElementException:找不到行
The Huxley: java.util.NoSuchElementException: No line found
我在 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);
}
}
补充一下,在我评论的行 "WATCH OUT THIS LINE" 中,如果我删除该行,扫描仪将忽略 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
entradas = in.nextInt();
String valores ="";
while(in.hasNextLine())
valores = in.nextLine();
问题是 nextInt()
没有将扫描仪的位置设置为下一行的开头,因此第一次调用将 return 为空字符串。这在这里解释得很清楚...
Can't use Scanner.nextInt() and Scanner.nextLine() together
需要注意的一件事是它对你有用,因为你重新初始化了扫描器,从而强制它从下一行的开头开始。但不幸的是,这对 Huxley 不起作用,因为他们以编程方式一次发送所有输入,并且由于失去对第一个 Scanner 的引用而丢失所有输入。
下面的也应该有效
entradas = in.nextInt();
String valores = in.nextLine();//Get empty Str & Set pos of Scanner to beginning of next line
valores = in.nextLine();
我在 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);
}
}
补充一下,在我评论的行 "WATCH OUT THIS LINE" 中,如果我删除该行,扫描仪将忽略 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
entradas = in.nextInt();
String valores ="";
while(in.hasNextLine())
valores = in.nextLine();
问题是 nextInt()
没有将扫描仪的位置设置为下一行的开头,因此第一次调用将 return 为空字符串。这在这里解释得很清楚...
Can't use Scanner.nextInt() and Scanner.nextLine() together
需要注意的一件事是它对你有用,因为你重新初始化了扫描器,从而强制它从下一行的开头开始。但不幸的是,这对 Huxley 不起作用,因为他们以编程方式一次发送所有输入,并且由于失去对第一个 Scanner 的引用而丢失所有输入。
下面的也应该有效
entradas = in.nextInt();
String valores = in.nextLine();//Get empty Str & Set pos of Scanner to beginning of next line
valores = in.nextLine();