Java程序的每周工作日

Java程序的每周工作日,java,while-loop,days,Java,While Loop,Days,我有一个最后的任务,我已经坚持了一段时间了,我正在寻求帮助。目前,除了最后一部分(排序)之外,提示中的所有条件都得到满足,该部分将接受2个数字用户输入,并使用while循环使总数小于7。这是因为我正在编写的程序需要接受用户的输入,并将他们选择的日期、前一天(在周历上)以及第二天返回到原始返回值,最后,用户需要输入天数,以确定原始日期加上X天数,生成一周中的那一天。我已经附上密码了。任何好的建议或帮助都将不胜感激。谢谢你花时间看这本书 //import library import java.ut

我有一个最后的任务,我已经坚持了一段时间了,我正在寻求帮助。目前,除了最后一部分(排序)之外,提示中的所有条件都得到满足,该部分将接受2个数字用户输入,并使用while循环使总数小于7。这是因为我正在编写的程序需要接受用户的输入,并将他们选择的日期、前一天(在周历上)以及第二天返回到原始返回值,最后,用户需要输入天数,以确定原始日期加上X天数,生成一周中的那一天。我已经附上密码了。任何好的建议或帮助都将不胜感激。谢谢你花时间看这本书

//import library
import java.util.*;

//declare the class and make it public
public class Day 
{
//store days of the week
   private static final int SUNDAY = 0;
   private static final int MONDAY = 1;
   private static final int TUESDAY = 2;
   private static final int WEDNESDAY = 3;
   private static final int THURSDAY = 4;
   private static final int FRIDAY = 5;
   private static final int SATURDAY = 6;

//create a new scanner input
   static Scanner keyboard = new Scanner(System.in);

//creates a public method
   public static void main(String[] args)
   {
      //declare variables
      Day dy = new Day(Day.WEDNESDAY);
      int choice;
      //creates menu varible
      do
      {
         //creates the first selection menu like on page 529
         menu2();
         choice = keyboard.nextInt();
         System.out.println();

         switch (choice)
         {
            case 1:

               do 
               {
                  menu1();
                  choice = keyboard.nextInt();
                  System.out.println();
                  switch (choice)
                  {
                     case 0:
                        day = SUNDAY;
                        break;
                     case 1:
                        day = MONDAY;
                        break;
                     case 2:
                        day = TUESDAY;
                        break;
                     case 3:
                        day = WEDNESDAY;
                        break;
                     case 4:
                        day = THURSDAY;
                        break;
                     case 5:
                        day = FRIDAY;
                        break;
                     case 6:
                        day = SATURDAY;
                        break;
                     case 32: //used 32 since there are only ever 31 days 
                        System.exit(0);
                        break;

                     default:
                        System.out.println("Invalid Input");

                  }
               //output the calculated selections
                  System.out.print("The day you selected is: ");
                  dy.print();
                  System.out.println();

                  System.out.print("The next day is: ");
                  dy.setDay(dy.getNextDay());
                  dy.print();
                  System.out.println();

                  System.out.print("The previous is: ");
                  dy.setDay(dy.getPreviousDay());
                  dy.setDay(dy.getPreviousDay());
                  dy.print();
                  System.out.println();

                  System.out.print("How many days would you like to add (within a month's time)? ");
               //output added days

                  int days = keyboard.nextInt();
                  dy.setDay(days);
                  System.out.print("\nAdding " + days + " day(s) makes your new day: ");
                  while(day > 6)
                  {
                     choice + (day -= 7);
                  }

                  dy.print();
                  System.out.println();


               //program exit

               }
               while (choice != 32);

               break;
         //create a case for the testing method
            case 2:
               System.out.println("Test Data For Day Class");

               System.out.print("\nInitial day: ");
               dy = new Day(Day.SUNDAY);
               dy.print();

               System.out.print("\nNext day: ");
               dy.setDay(dy.getNextDay());
               dy.print();

               System.out.print("\nAdd 12 Days: ");
               dy.setDay(dy.addDays(12));
               dy.print();

               System.out.print("\nPrevious day: ");
               dy.setDay(dy.getPreviousDay());
               dy.print();

               System.out.print("\nAdd 3 days: ");
               dy.setDay(dy.addDays(3));
               dy.print();
               System.out.println("\n\n");

               break;
         //program exit
            case 32:
               System.exit(0);
               break;

            default:
               System.out.println("Invalid Input");
         }

      }
      while (choice != 32);
   }
//output the day selection menu
   public static void menu1()
   {
      System.out.println("Please Select Your Initial Day (or 32 to quit):");
      System.out.println(" 0: Sunday.");
      System.out.println(" 1: Monday.");
      System.out.println(" 2: Tuesday.");
      System.out.println(" 3: Wednesday.");
      System.out.println(" 4: Thursday.");
      System.out.println(" 5: Friday.");
      System.out.println(" 6: Saturday.");
      System.out.println("32: To quit the program.");
   }
//output the type selection menu
   public static void menu2()
   {
      System.out.println("Enter: ");
      System.out.println("1: To Enter Data into the program.");
      System.out.println("2: For Test Data.");
      System.out.println("32: To quit the program.");
   }




  //Stores the day 

   public static int day;


  //Set the day.

   public void setDay(int day) 
   {
      this.day = day;
   }


 //Output the day

   public void print() 
   {
      System.out.println(this.toString());
   }


 //Return the day.

   public int getDay() 
   {

      return day;
   }


//Return the next day.

   public int getNextDay() {
      return (day + 1) % 7;
   }
//override for the days of the week
   @Override
   public String toString() {
      switch (Day.day) {
         case SUNDAY:
            return "Sunday";
         case MONDAY:
            return "Monday";
         case TUESDAY:
            return "Tuesday";
         case WEDNESDAY:
            return "Wednesday";
         case THURSDAY:
            return "Thursday";
         case FRIDAY:
            return "Friday";
         case SATURDAY:
            return "Saturday";
      }
      return "";
   }


  //Return the previous day.

   public int getPreviousDay() 
   {
      if (day == 0)
         return (day + 6) % 7;
      else
         return (day - 1) % 7;
   }


 //Calculate and return the day by adding days

   public int addDays(int days) 
   {

      return (day += days);
   }


   //Add the constructors.

   public Day() 
   {
      this.day = SUNDAY;
   }

   public Day(int day)
   {
      this.day = day;
   }
}

正如@cHao所说,您可以使用(或)运算符(%)轻松完成这项操作


正如@cHao所说,您可以使用(或)运算符(%)轻松完成这项操作


正如您所知,您不需要使用
while
循环来计算天数
(startDay+daysToAdd)%7
将在
startDay
之后为您提供道琼斯指数
daysToAdd
。正如您所知,您不需要在
循环中计算天数
(startDay+daysToAdd)%7
将在
startDay
之后为您提供道琼斯指数
daysToAdd
x = (x + y) % 7