Estoy probando varios ejercicios de un libro de programación de Java. Tengo el siguiente código:Problema con "while" en 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
El problema es que el bucle while no parece funcionar. Cada vez que ingreso "stop" como employeeName, el programa simplemente continúa. Intenté reemplazar "detener" con cualquier otra cadena y todavía no funciona. Pero cuando trato de inicializar employeeName con "stop", el programa se cierra de inmediato, lo que se espera. ¿Qué estoy haciendo mal aquí?
Además, después del primer ciclo, el programa omite siempre preguntar al employeeName. He intentado reemplazar employeeName = input.nextLine();
con employeeName = input.next();
y ya no se lo saltea. Sin embargo, me pregunto, ¿hay alguna manera de que pueda hacerlo, no omitir la entrada al usar employeeName = input.nextLine();
?
¡Gracias de antemano por la ayuda!
Probablemente quiera decir 'while (!" Stop ".equals (employeeName))' para que coincida con el significado del código de ejemplo, ¿no? – maerics
Me gusta la expresión 'Yoda' :) – VoodooChild