Java クラス用に記述しようとしている単純なコードに 2 つの問題があります。これがほとんどの人にとって簡単に思える場合は申し訳ありませんが、私は Java を始めたばかりです。私が抱えている最初の問題は、ループが適切に継続しないことです。1回だけ問題なく実行され、最初に「quit」と入力すると終了しますが、1回実行すると、emp nameに別の値を入力できなくなります。ループの最後の行 enter emp name から最初の行までまっすぐ進み、時給を入力します。新しい名前を入力したり終了したりする機会はありません。
私の 2 番目の問題は、if ステートメントが、時給と労働時間に入力された値が 0 より大きいことを確認しようとしているということです。0 を入力するとエラー メッセージが表示されますが、負の数を入力すると、プログラムは何も問題はありません。入力された値が正の double のみであり、負の double または 0 を受け入れないことを確認するにはどうすればよいですか?
// Program to Calculate Payroll
import java.util.Scanner;
import java.text.DecimalFormat;
class Payroll
{
public static void main(String args[])
{
Scanner myScanner = new Scanner(System.in);
String empName;
double hourlyRate;
double hoursWorked;
double grossPay;
double netPay;
double taxes;
DecimalFormat money = new DecimalFormat("$.00");
//Get User Information
System.out.print( "Enter employee name or enter 'quit' when finished. " );
empName = myScanner.nextLine();
while (!empName.equals("quit"))
{
System.out.print( "What is their hourly rate? $");
hourlyRate = myScanner.nextDouble();
if (hourlyRate <= 0)
{
System.out.println( "Value is not valid, please enter an amount above zero.");
System.out.print( "What is their hourly rate? $");
hourlyRate = myScanner.nextDouble();
}
System.out.print( "How many hours did they work? ");
hoursWorked = myScanner.nextDouble();
if (hoursWorked <= 0)
{
System.out.println( "Value is not valid, please enter an amount above zero.");
System.out.print( "How many hours did they work? ");
hoursWorked = myScanner.nextDouble();
}
//Calculate Pay and Taxes
grossPay = hourlyRate * hoursWorked;
taxes = .13 * grossPay;
netPay = grossPay - taxes;
//Display All Information
System.out.print( "Employee name: ");
System.out.println(empName);
System.out.print( "Hourly Rate: ");
System.out.println(money.format(hourlyRate));
System.out.print( "Hours Worked: ");
System.out.println(hoursWorked);
System.out.print( "Gross Pay = ");
System.out.println(money.format(grossPay));
System.out.print( "Federal Taxes = ");
System.out.println(money.format(taxes));
System.out.print( "Net Pay = ");
System.out.println(money.format(netPay));
System.out.print( "Enter employee name or enter 'quit' when finished. " );
empName = myScanner.nextLine();
}
System.out.println( "Thank you for using this payroll program.");
}
}