![](/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.