![](/img/trans.png)
[英]Java Scanner Error: Exception in thread “main” java.util.NoSuchElementException
[英]Java Error “Exception in thread ”main“ java.util.NoSuchElementException”
我收到此错误:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at IntegerSequence.main(IntegerSequence.java:73)
这是我的第一个尝试从文本文件中读取输入并将输出提交到另一个文本文件的实验室。 我需要它来运行5个不同的'for'循环。 我以为我很亲密,然后我收到了错误。 我的代码如下:
public static void main(final String[] args) throws IOException {
File myFile = new File("input.txt");
Scanner inputFile = new Scanner(myFile);
PrintWriter outputFile = new PrintWriter("output.txt");
// set accumulator
int sum = 0;
double iterations = inputFile.nextDouble();
for (int start = 1; start <= iterations; start++) {
int starting = inputFile.nextInt();
int ending = inputFile.nextInt();
for (starting = 0 + starting; starting <= ending; starting++) {
sum = sum + starting;
}
}
outputFile.println(iterations);
outputFile.println(sum);
outputFile.close();
inputFile.close();
}
}
谢谢您的帮助!
输入文件是:5 1 10 1 15
那么你的第一个数字应该是2,因为你只有两组starting
和ending
值。 或者,您只需要提供三对值。
但是,理想情况下,您应该使用hasNextXYZ()
检查防御性程序,以检查您将要使用相应的nextXYZ()
读取调用读取的值的类型,否则您将面临获取NoSuchElementException
的风险。
另外,你在这里专门处理int
。 因此,您应该使用int
作为数据类型,并仅调用hasNextInt()
和nextInt()
。
从那以后, starting = 0 + starting;
似乎什么都不做, for
循环可以简单
for (; starting <= ending; starting++) {
sum += starting;
}
即for
循环中的初始化表达式是可选的。
要分别计算总和而不是累计总数,您需要移动sum
并将其关联的println()
调用到循环内部。
int iterations = inputFile.nextInt();
outputFile.println(iterations);
for (int start = 1; start <= iterations; start++) {
int starting = inputFile.nextInt();
int ending = inputFile.nextInt();
int sum = 0; // reset sum to 0
for (; starting <= ending; starting++) {
sum += starting;
}
outputFile.println(sum);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.