为什么我的代码输出了数千次

  • 本文关键字:千次 输出 代码 java
  • 更新时间 :
  • 英文 :


我应该让这个代码输出Day,然后是当天的工作小时数。代码当前正在显示日期和总数。但它显示的次数太多,程序甚至无法注册。例如,它要求输入一天,我会在周一输入。然后是工作小时数,我会加6。它将在周一输出6.0万次。预期产出应为第6天。我缺少什么或添加了什么导致了这种情况?

// SuperMarket.java - This program creates a report that lists weekly hours worked 
// by employees of a supermarket. The report lists total hours for 
// each day of one week. 
// Input:  Interactive
// Output: Report. 
import java.util.Scanner;

public class SuperMarket
{
public static void main(String args[]) 
{
// Declare variables.
final String HEAD1 = "WEEKLY HOURS WORKED";
final String DAY_FOOTER = "          Day Total ";  // Leading spaces are intentional.
final String SENTINEL = "done";     // Named constant for sentinel value. 
double hoursWorked = 0;             // Current record hours.
String hoursWorkedString = "";      // String version of hours
String dayOfWeek;       // Current record day of week.
double hoursTotal = 0;           // Hours total for a day.
String prevDay = "";             // Previous day of week.
boolean done = false;            // loop control
Scanner input = new Scanner(System.in);
// Print two blank lines.
System.out.println(); 
System.out.println(); 
// Print heading.
System.out.println(HEAD1);
// Print two blank lines.
System.out.println(); 
System.out.println();
// Read first record 
System.out.println("Enter day of week or done to quit: ");
dayOfWeek = input.nextLine(); 
if(dayOfWeek.compareTo(SENTINEL) == 0)
done = true;
else
{
System.out.print("Enter hours worked: ");
hoursWorkedString = input.nextLine();
hoursWorked = Integer.parseInt(hoursWorkedString); 
prevDay = dayOfWeek;
}

while(done == false)
{  
System.out.println(dayOfWeek + " " + hoursWorked);
hoursTotal = 0;
prevDay = hoursWorkedString;
}
System.out.println(dayOfWeek + " " + hoursWorked + hoursTotal);
hoursTotal++;
if(dayOfWeek.compareTo(SENTINEL) == 0)
{
hoursWorked = dayOfWeek.compareTo(SENTINEL);
prevDay = dayOfWeek;
done = true;
}
else
done = false;

// Include work done in the dayChange() method
if(dayOfWeek.compareTo(SENTINEL) == 0)
System.out.println(DAY_FOOTER + hoursTotal);
System.exit(0);
} // End of main() method.
} // End of SuperMarket class.
while(done == false)
{  
System.out.println(dayOfWeek + " " + hoursWorked);
hoursTotal = 0;
prevDay = hoursWorkedString;
}

在这个代码块中,您没有更改done变量,因此它是一个无限循环。

最新更新