こんにちは私のプログラムが正しく動作するのに問題があります。私は構文エラーをクリアすることができましたが、今は私の出力を発行しています。whileループのネストされたif/elseステートメント
まず、最初のIF文の中で、自分の名前と部門を入力するように促すので、出力すると名前は空白になり、部門だけが入力します。 "String name"をinput.nextに変更すると正しくプロンプトが表示されますが、deptとtotalHrsWkdは一緒にマージされるため、IF文全体では何かだと思っています。
私のプログラムをテストしているとき、totalHrsWkdの負の数を入力するとクラッシュします。 2つのprint文がすべて1行に表示され、JCreatorがクラッシュします。
この問題についてお手伝いいただきありがとうございます。ありがとうございます。
public static void main(String[] args)
{
// TODO code application logic here
int attempt = 1, employeeID = 0;
double hoursWorked = 0.0;
double overtimeHrs = 0.0;
double totalHrsWkd = 0.0;
Scanner input = new Scanner(System.in);
while(attempt < 4)
{
System.out.println("Enter your employee ID: ");
employeeID = input.nextInt();
if(employeeID == 12345678)
{
System.out.printf("Enter your name: ");
String name = input.nextLine();
System.out.printf("Enter your department: ");
String dept = input.nextLine();
System.out.printf("Enter your hours worked including overtime: ");
totalHrsWkd = input.nextDouble();
while(totalHrsWkd < 0)
{
System.out.printf("Try again! Hours worked cannot be negative.");
System.out.printf("Enter your hours worked including overtime: ");
}
overtimeHrs = totalHrsWkd - 40;
hoursWorked = totalHrsWkd - overtimeHrs;
if(overtimeHrs <= 0)
{
}
else if(overtimeHrs == 0)
{
}
else if(hoursWorked == totalHrsWkd)
{
}
else if(hoursWorked == 40)
{
}
System.out.printf("Name: %s\n" + "Dept: %s\n" +
"Hours Worked: %.2f\n" + "Overtime Hours: %.2f\n"
+ "Total Hours Worked: %.2f\n", name, dept,
hoursWorked, overtimeHrs, totalHrsWkd);
attempt = 3;
}
else
{
if(attempt < 3)
{
System.out.println("Invalid ID! Try again." );
}
else
{
System.out.println("Invalid ID! 0 attempts left. Exiting program!");
}
}
++attempt;
}
System.exit(0);
}
}
'totalHrsWkd = input.nextDouble();'はwhileループの中に入れてください。さもなければ、 'totalHrsWkd'を変更することなく、無限ループで動いているだけです。 – biziclop
なぜ' Scanner'を使うことにしましたか?これは、対話型プログラムにとっては決して適切ではありません。代わりに、['BufferedReader.readLine'](http://docs.oracle.com/javase/1.5.0/docs/api/java/io/BufferedReader.html)を使用してください。 –
これは私のJava 1クラスのプログラミング課題です。本質的に、先生は擬似コードを私たちに提供し、プログラムをコーディングする必要がありました。これまでのところ、Scannerクラスのみを扱っています。私はまだ私たちの本でBufferedReader.readLineに出くわしたことはありません。 – Abweichung