你好,我遇到了程序无法正常运行的问题。我已经排除了所有语法错误,但现在我的输出有问题。
首先,在第一个IF语句中,它同时提示用户输入姓名和部门,所以当它输出时,姓名为空,只有部门有输入。我认为这与整个IF语句有关,因为如果我将“String name”更改为input.next,那么姓名就会正确提示,但dept和totalHrsWkd会合并在一起。
此外,在测试程序时,如果我输入负数的totalHrsWkd,它会崩溃。它会显示两个print语句都在一行上,然后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
没有发生任何变化。 - biziclopScanner
?这在交互式程序中几乎从不合适(并会导致像你在这里看到的问题)。相反,使用BufferedReader.readLine
。 - Greg Hewgill