Ich probiere mehrere Übungen aus einem Java-Programmierbuch aus. Ich habe den Code unten:Problem mit "während" in Java
import java.io.*;
import java.util.Scanner;
public class Ex420
{
public static void main(String args[])
{
String employeeName = "";
double workHours,excessHours, hourlyRates, grossPay;
Scanner input = new Scanner(System.in);
while (employeeName != "stop")
{
System.out.printf("\nInput employee name or stop to exit: ");
employeeName = input.nextLine();
System.out.printf("Input working hours: ");
workHours = input.nextDouble();
System.out.printf("Input hourly rates: ");
hourlyRates = input.nextDouble();
if (workHours <= 40 & workHours >= 0)
{
excessHours = 0;
grossPay = hourlyRates * workHours;
System.out.printf("%s's gross pay is $%.2f\n", employeeName, grossPay);
}
else if (workHours > 40)
{
excessHours = workHours - 40;
grossPay = hourlyRates * 40 + 1.5 * hourlyRates * excessHours;
System.out.printf("\n%s's worked for %.1f excess hours.\n", employeeName, excessHours);
System.out.printf("%s's gross pay is $%.2f\n", employeeName, grossPay);
}
else
{
System.out.printf("Invalid input. Please try again.");
}
} // end while
} // end main
} // end class Ex420
Das Problem ist, die while-Schleife nicht zu funktionieren scheint. Immer wenn ich "stop" als employeeName eingib, läuft das Programm einfach weiter. Ich habe versucht, "stop" durch einen anderen String zu ersetzen und es funktioniert immer noch nicht. Aber wenn ich versuche, employeeName mit "stop" zu initialisieren, wird das Programm sofort beendet, was erwartet wird. Was mache ich hier falsch?
Desweiteren überspringt das Programm nach der ersten Schleife immer die Frage nach dem employeeName. Ich versuchte, employeeName = input.nextLine();
durch employeeName = input.next();
zu ersetzen und es überspringt es nicht mehr. Ich frage mich jedoch, gibt es eine Möglichkeit, dass ich es nicht überspringe die Eingabe bei der Verwendung von employeeName = input.nextLine();
?
Vielen Dank im Voraus für die Hilfe!
Sie meinen wahrscheinlich "while (!" Stop ".equals (employeeName))' um die Bedeutung des Beispielcodes zu entsprechen, oder? – maerics
Ich mag den 'Yoda' Ausdruck :) – VoodooChild