Mein Code unten scheint in eine Endlosschleife zu gehen und ich bin verwirrt, warum. Ich auch ein Stück Code eingeführt, bis ich die Fehlermeldung ausgelöst:Warum geht mein Java-Code in eine Endlosschleife?
import java.util.Scanner;
public class Average
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int count = 0;
double sum = 0;
System.out.print("Enter a value: ");
boolean notDone = true;
while (notDone)//go into loop automatically
{
if(!in.hasNextDouble()){
if(count==0){//this part generates bugs
System.out.print("Error: No input");
}else{
notDone = false;
}
}else{
sum+= in.nextDouble();
count++;
System.out.print("Enter a value, Q to quit: ");
}
}
double average = sum/count;
System.out.printf("Average: %.2f\n", average);
return;
}
}
Wie im Kommentar erwähnt, ist der Hauptschuldige diese Zeilen:
if(count==0){ //this part generates bugs
System.out.print("Error: No input");
}
Dies hat den Zweck, wenn Fall ist, so dass der Benutzer bleibt in der Schleife und wird daran erinnert, dass eine gültige Eingabe erforderlich ist, bis eine gültige Eingabe empfangen wird, aber es ist nicht so, als ob es keine Möglichkeit gibt, die Schleife zu verlassen, da der Benutzer unter der Bedingung, dass das Programm empfangen wird, aus der Schleife ausbrechen kann gültige Eingabe (mindestens ein Doppelwert, gefolgt von einem Nicht-Doppelwert).
Prost.