2016-03-02 31 views
1

我修復了我的setMonthnum方法,但現在我的輸入將設置月份號爲0,13等基於我的輸入。我需要知道如何去再次詢問輸入,而不是將我的Monthnum設置爲不正確的輸入。如果您有任何建議來簡化我的代碼,請隨時聲明它們!我的代碼如下:創建構造函數和方法與月

import java.util.Scanner; 

public class whichMonth { 

    public static void main(String args[]){ 

     Scanner input = new Scanner(System.in); 
     System.out.println("Please enter the month name or number: "); 
     int monthNumber = input.nextInt(); 


     //set up variable access to the class 
     AnyMonth inputMonthNumber = new AnyMonth(); 

     // set the month number from user input 
     inputMonthNumber.setMonthnum.input.nextInt(monthNumber); 

     // get the month name from user input number 
     String monthName = inputMonthNumber.getMonthName(monthNumber); 
    } 
} 

class AnyMonth { 

    int Monthnum; 
    String monthName; 

    public AnyMonth() { 

     Monthnum = 1; 
    } 
    public AnyMonth(int currentMonthNumber) { 

     Monthnum = currentMonthNumber; 

     switch(currentMonthNumber) { 
     case 1: 
      Monthnum = 1; 
      monthName = "January"; 
      System.out.println("January"); 
      break; 
     case 2: 
      Monthnum = 2; 
      monthName = "February"; 
      System.out.println("February"); 
      break; 
     case 3: 
      Monthnum = 3; 
      monthName = "March"; 
      System.out.println("March"); 
      break; 
     case 4: 
      Monthnum = 4; 
      monthName = "April"; 
      System.out.println("April"); 
      break; 
     case 5: 
      Monthnum = 5; 
      monthName = "May"; 
      System.out.println("May"); 
      break; 
     case 6: 
      Monthnum = 6; 
      monthName = "June"; 
      System.out.println("June"); 
      break;   
     case 7: 
      Monthnum = 7; 
      monthName = "July"; 
      System.out.println("July"); 
      break;   
     case 8: 
      Monthnum = 8; 
      monthName = "August"; 
      System.out.println("August"); 
      break;   
     case 9: 
      Monthnum = 9; 
      monthName = "September"; 
      System.out.println("September"); 
      break;   
     case 10: 
      Monthnum = 10; 
      monthName = "October"; 
      System.out.println("October"); 
      break; 
     case 11: 
      Monthnum = 11; 
      monthName = "November"; 
      System.out.println("November"); 
      break; 
     case 12: 
      Monthnum = 12; 
      monthName = "December"; 
      System.out.println("December"); 
      break; 
     default: 
      Monthnum = 1; 
      monthName = "January"; 
     } 

    } 

    public AnyMonth(String userMonthName) { 

     switch(userMonthName) { 
     case "January": 
      Monthnum = 1; 
      monthName = "January"; 
      System.out.println("January"); 
      break; 
     case "February": 
      Monthnum = 2; 
      monthName = "February"; 
      System.out.println("February"); 
      break; 
     case "March": 
      Monthnum = 3; 
      monthName = "March"; 
      System.out.println("March"); 
      break; 
     case "April": 
      Monthnum = 4; 
      monthName = "April"; 
      System.out.println("April"); 
      break; 
     case "May": 
      Monthnum = 5; 
      monthName = "May"; 
      System.out.println("May"); 
      break; 
     case "June": 
      Monthnum = 6; 
      monthName = "June"; 
      System.out.println("June"); 
      break;   
     case "July": 
      Monthnum = 7; 
      monthName = "July"; 
      System.out.println("July"); 
      break;   
     case "August": 
      Monthnum = 8; 
      monthName = "August"; 
      System.out.println("August"); 
      break;   
     case "September": 
      Monthnum = 9; 
      monthName = "September"; 
      System.out.println("September"); 
      break;   
     case "October": 
      Monthnum = 10; 
      monthName = "October"; 
      System.out.println("October"); 
      break; 
     case "November": 
      Monthnum = 11; 
      monthName = "November"; 
      System.out.println("November"); 
      break; 
     case "December": 
      Monthnum = 12; 
      monthName = "December"; 
      System.out.println("December"); 
      break; 
     default: 
      Monthnum = 1; 
      monthName = "January"; 

     }  

    } 

    public void setMonthnum (int userMonth) { 

     Monthnum = userMonth; 

     if (userMonth < 1 || userMonth > 12){ 
     System.out.println("Invalid input"); 
     this.Monthnum = userMonth; 
     } 

    } 

    public int getMonthnum(int currentMonthNumber) { 

     Monthnum = currentMonthNumber; 

     return currentMonthNumber; 

    } 

    public String getMonthName(int currentMonthName) { 

     Monthnum = currentMonthName; 
     // use swtich-case here instead, default case should return 1/Jan 
     switch(currentMonthName) { 
     case 1: 
      monthName = "January"; 
      break; 
     case 2: 
      monthName = "February";; 
      break; 
     case 3: 
      monthName = "March"; 
      break; 
     case 4: 
      monthName = "April"; 
      break; 
     case 5: 
      monthName = "May"; 
      break; 
     case 6: 
      monthName = "June"; 
      break;   
     case 7: 
      monthName = "July"; 
      break;   
     case 8: 
      monthName = "August"; 
      break;   
     case 9: 
      monthName = "September"; 
      break;   
     case 10: 
      monthName = "October"; 
      break; 
     case 11: 
      monthName = "November"; 
      break; 
     case 12: 
      monthName = "December"; 
      break; 
     default: 
      monthName = "January"; 

     } 
     return monthName; 
    } 

    public String toString(String monthNameToString){ 

     monthName = monthNameToString; 

     return monthNameToString; 

    } 

    public boolean equals(int month) { 

     if (Monthnum == month) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 

    public boolean greaterThan(int month) { 

     if (Monthnum > month) { 
      return true; 
     } 
     else { 
      return false; 
     } 
    } 

    public boolean lessThan(int month) { 

     if (Monthnum < month) { 
      return true; 
     } 
     else { 
      return false; 
     } 

    } 

} 
+0

我建議你在你的'setMonthnum'方法拋出一個異常,而不是簡單的'sout'調用,如果條件錯了 – Andrew

+0

請解釋一下嗎? – simplest

+0

當你向你的方法傳送了不正確的參數時,你將不會處理錯誤的數據,但是你可能會拋出,例如,'IllegalArgumentException' – Andrew

回答

1

變化

inputMonthNumber.setMonthnum.input.nextInt(monthNumber);

inputMonthNumber.setMonthnum(monthNumber);

而且,在所有的getXXX方法,刪除下面的語句:

Monthnum = currentMonthName;

吸氣劑被要求返回值。通過getter方法設置值不是一個好習慣。 This文章解釋了爲什麼getters和setters需要任何如何寫他們:)

+0

謝謝你的幫助,但是這是在作業中特別提到的。我不認爲我會在現實中這樣做。 – simplest

相關問題