java - Java 程序星期几

标签 java while-loop days

我有一项期末作业,已经坚持了一段时间了,我正在寻求帮助。目前,提示中的每个条件都满足,除了最后一部分(有点),它需要 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所说,您可以使用 modulo 轻松做到这一点(或 remainder )运算符 (%)。

x = (x + y) % 7

关于java - Java 程序星期几,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38843802/

相关文章:

java - 使用扫描仪读取

C# 相当于 Java 的 charAt()?

java - 绑定(bind)到 TypeLiteral 是 google guice 中的好习惯还是坏习惯

java - 检查扫描仪输入是否有 "$"字符

java - 在 while 循环内初始化变量

计算从键盘输入的两个日期之间的天数

javascript - 如何获得谷歌工作表中小时数超过 24 的持续时间的天数?

java,评估 URL 而不是 File 的广泛使用

java - Java包装器作为守护程序