java - 为什么我的代码输出数千次?

标签 java

我应该让这段代码输出一天的总计,然后输出当天的工作小时数。该代码当前显示日期和总数。但它显示的次数太多,程序甚至无法注册。比如它要求输入一天,我就输入星期一。然后是工作小时数,我会输入 6。然后它将输出 Monday 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 变量,因此它是一个无限循环。

关于java - 为什么我的代码输出数千次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60570060/

相关文章:

java.sql.SQLException : database is locked error

java - JSF 和 xhtml 文件的自动重新加载

java - 在java中打印棋盘网格?

java - (Node.js/Java) 如何使 XML 输出漂亮

java - MyBatis 和泛型 : Return Type ArrayList<? extends MyClass> Returns Nulls

java - 为什么 ExceptionHandlerExceptionResolver 会进行重定向而不是简单的响应?

java - 如何使用 GSon 公开方法?

java - 线程notifyAll()

java - 执行bat文件时输入行太长的问题

java - 程序如何将mysql中的参数返回给java