2016-08-09 4 views
1

私はちょっと立ち往生して助けを求めていました。現在のところ、2つの数値ユーザー入力を受け取り、whileループを使用して合計を7未満にする最後の部分(ソート)を除いて、すべての条件がプロンプトから満たされます。これは、私が書いているプログラムがユーザの入力を受け取り、選択された日、その週のカレンダーの前日、翌日の元の戻り値に戻り、最後に、ユーザは、元の日プラスのX日数は、その曜日を生成します。コードが添付されています。良い指針や助けをいただければ幸いです。それを見ていただきありがとうございます。 @cHaoは、あなたが簡単にmodulo(またはremainder)演算子(%)を使用してこの操作を行うことができ、言ったのと同じように曜日Javaプログラムの日

//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; 
    } 
} 
+2

ちょうどあなたが知っているように、あなたは日をカウントするために 'while'ループは必要ありません。 '(startDay + daysToAdd)%7'は' startDay'の後にDOW 'daysToAdd'を与えます。 – cHao

答えて

関連する問題