Ich habe diese Funktion als Teil meiner Hausaufgabe für meinen Java-College-Kurs:
Code: Select all
private static void addPetrol(Vehicle v){
Scanner scanner = new Scanner(System.in);
System.out.print("How many gallons of Petrol would you like to add: ");
while (true) {
String input = scanner.next();
System.out.println();
try {
float gallons = Float.parseFloat(input);
v.addPetrol(gallons);
System.out.println("Adding " + gallons + " gallons of fuel to the tank");
break;
}
catch (VechicleFuelException e) {
System.out.println(e.getMessage() + " Try again: ");
}
catch(Exception e){
System.out.println("Input " + input + " is not a valid amount, try again: ");
}
// Consume the leftover newline if there is any
if (scanner.hasNextLine()) {
scanner.nextLine();
}
}
}
Dieser Fehler tritt auf, wenn Sie einen Eingabepuffer haben und wenn Sie die Eingabetaste drücken, erfasst die nächste Funktion das erstellte neue Zeilenzeichen nicht, also in meinem Fall, wenn das Wenn die Schleife zu einer zweiten Interaktion führt, würde das neue Zeilenzeichen von der nächsten Funktion übernommen werden, was einen Fehler verursacht. Dies kann jedoch leicht vermieden werden, indem die Funktion scanner.nextLine() verwendet wird, um den Puffer anschließend zu bereinigen. Das Problem besteht jedoch darin, dass eine neue Zeile eingeführt wird und dadurch das Erscheinungsbild der Befehlszeilenanwendung beeinträchtigt wird.