私のクラスでは、プログラムを書く必要がありました。長い話を簡単に言えば、私はそれをフィードバックを提供するオートグラベーターに提出します。すべてのテストに合格しなければ、自動採点はヒントを提供します。ヒントの1つは、私のコードがいくつかのテストケースのために無限ループになっているように見えたが、どこでこれが起こる可能性があるのかわからない。誰かが私が間違っているかもしれないところへ正しい方向に向けることができますか?無限ループがどこにあるのか分かりません
public class TwoLargest {
public static void main(String[] args){
double largest = Double.NEGATIVE_INFINITY;
double secondLargest = Double.NEGATIVE_INFINITY;
int numNums = 0;
System.out.print("Please enter a terminating value: ");
double termValue = IO.readDouble();
System.out.println("Please enter your list of numbers: ");
while(true){
double temp = IO.readDouble();
numNums++;
if((temp == termValue && numNums < 2) || temp == termValue && numNums == 2){
IO.reportBadInput();
numNums = 0;
System.out.println("Please try again: ");
continue;
}
if(temp == termValue){
break;
}
if (temp > largest) {
secondLargest = largest;
largest = temp;
}
else if (temp > secondLargest) {
secondLargest = temp;
}
}
IO.outputDoubleAnswer(largest);
IO.outputDoubleAnswer(secondLargest);
}
}
なぜ私はターミナル値は表示されません。今まで==を使用していて問題が発生していない場合は? – warriors31
浮動小数点数表現における丸め誤差。私が参考文献として提供したリンクはもう少し説明します。 –