Java错误“线程中的异常”main“Java.util.NoSuchElementException”
我得到这个错误:Java错误“线程中的异常”main“Java.util.NoSuchElementException”,java,Java,我得到这个错误: 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
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();
}
}
谢谢你的帮助
输入文件是:511015
第一个数字应该是2,因为只有两组起始值和结束值。或者,您只需要再提供三对值
但是,理想情况下,您应该使用hasNextXYZ进行防御性编程,检查您将要通过相应的nextXYZ读取调用读取的值的类型,否则您将面临获得NoSuchElementException的风险
此外,您在这里专门处理INT。因此,您应该使用int作为数据类型,并仅调用hasNextInt和nextInt
从那时起,开始=0+开始;似乎什么也不做,for循环可以是
for (; starting <= ending; starting++) {
sum += starting;
}
发布您的输入文件。这些数字是如何列出的?为什么迭代是一个浮点数?您的文件是否完整?是否有足够的数据用于所有迭代?哦!!这是有道理的!我对java非常陌生。非常感谢。但现在它没有给我正确的答案。。。。输入文件是:5 1 10 1 15 Scanner的文档说,如果输入用尽,nextInt方法可能会抛出NoSuchElementException。在尝试读取之前,请尝试使用hasNext。为什么在迭代中使用nextDouble以及starting=0+starting会产生什么影响。我是否遗漏了一些数据,但同时,我需要关于如何使输出文件显示255120的建议,现在它显示255175,这就像一个运行总数…如果有意义的话,我需要将总和分开。。非常感谢。
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);
}