Я пробую упражнения из книги по программированию на 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
Проблема в том, что цикл while не работает. Всякий раз, когда я вводю «stop» в качестве employeeName, программа просто запускается. Я попытался заменить «стоп» любой другой строкой, и она все еще не работает. Но когда я пытаюсь инициализировать employeeName с помощью «stop», программа сразу же завершает работу, что ожидается. Что я тут не так делаю?
Кроме того, после первого цикла программа всегда пропускает запрос employeeName. Я попытался заменить employeeName = input.nextLine();
на employeeName = input.next();
, и это больше не пропускается. Мне вот интересно, есть ли способ заставить его не пропускать ввод при использовании employeeName = input.nextLine();
?
Заранее спасибо за помощь!