2016-10-14 4 views
2

日、月、年を入力して翌日の日付を計算して出力するJavaプログラム(クラスNextDay)を記述する必要があります。翌日のJavaアプリケーション

サンプルコールと出力:

Actual Date 12.12.2004 
The next day is the 13.12.2004. 

入力も正しいかどうかチェックする必要があります!誤った日付配座(例えば、32 12 2007)が入力された場合、例外InvalidDateArgumentsExceptionがスローされる。クラスjava.lang.Exceptionのサブクラスとして適切な形式でこのクラスを定義します。

私はそれを作成し始めましたが、問題はあります。私は<かスイッチのステートメントで>私は何をすればいいのでしょうか?ここに私のクラスは次のとおりです。

public class Date { 

    private int day; 
    private int month; 
    private int year; 

    public Date(int day, int month, int year) { 
     this.day = day; 
     this.month = month; 
     this.year = year; 
    } 

    public Date getNextDay() throws Exception { 
     if (isLeapYear() == true) { 
      switch (month) { 

       case 1: 
        day = 31; 
        break; 

       case 2: 
        day = 29; 
        break; 

       case 3: 
        day = 31; 
        break; 

       case 4: 
        day = 30; 
        break; 

       case 5: 
        day = 31; 
        break; 

       case 6: 
        day = 30; 
        break; 

       case 7: 
        day = 31; 
        break; 

       case 8: 
        day = 31; 
        break; 

       case 9: 
        day = 30; 
        break; 

       case 10: 
        day = 31; 
        break; 

       case 11: 
        day = 30; 
        break; 

       case 12: 
        day = 31; 
        break; 
      } 

     } 
     return new Date(day + 1, month, year); 

    } 

    public int getDay() { 
     return day; 
    } 

    public int getMonth() { 
     return month; 
    } 

    public int getYear() { 
     return year; 
    } 

    public boolean isLeapYear() { 
     if (year % 4 == 0 && year % 100 != 0 && year % 400 == 0) { 
      return true; 
     } 
     return false; 
    } 

    public String toString() { 
     return this.day + "." + this.month + "." + this.year; 
    } 
} 

...私たちは標準クラス

あなたがスイッチケースを使用する必要がある場合は、あなたが設定し、それを使用する必要がありますを使用することはできませんので、

public class NextDay { 

    public static void main(String args[]) throws Exception { 
     Date dateObj = new Date(20, 5, 2016); 
     System.out.println("Old Date: " + dateObj.getDay() + "." + dateObj.getMonth() + "." + dateObj.getYear() + "."); 
     System.out.println("The next day is " + dateObj.getNextDay().toString() + "."); 
    } 
} 
+0

だろうが、彼らは私がスイッチケースにやるべきことを私に言った、そのために私の大学、私は初心者プログラマです私たちはスイッチケースを学んでいます。 – meert

+0

独自の 'Date'クラスを定義する必要がありますか? 'java.util.Date'が存在すると、あなたは –

+0

を知っていません。私は推測する必要はありません。 – meert

答えて

2

"または"内の文switch、右?

switch(variable){ 
     case 1: 
     case 2: 
     case 3: { 
      //.. when variable equals to 1 or 2 or 3 
     } 
    } 

だから、あなたがこのようなあなたのgetMaxDaysInMonth方法書くことができます:また

int getMaxDaysInMonth() 
{ 
    int daysInMonth = 0; 
    switch(month) 
    { 
     case 1: 
     case 3: 
     case 5: 
     case 7: 
     case 8: 
     case 10: 
     case 12: 
      daysInMonth = 31; 
      break; 
     case 2: 
      if(isLeapYear()) 
      { 
       daysInMonth = 29; 
      } 
      else 
      { 
       daysInMonth = 28; 
      } 
      break; 
     case 4: 
     case 6: 
     case 9: 
     case 11: 
      daysInMonth = 30; 
    } 

    return daysInMonth; 
} 

を、あなたがチェックしているあなたはラインによってcaseラベル行を記述する場合、あなたはこのように、取得する「またはステートメント」うるう年は間違っています。

boolean isLeapYear(){ 
     return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); 
    } 

そして、ここでは、あなたが一日インクリメント方法は次のとおりです:ここでは正しい方法だ私は

void incrementDate(){ 
    if((day + 1) > getMaxDaysInMonth()) 
    { 
     day = 1;   
     if (month == 12) 
     { 
      month = 1; 
      year++; 
     }else{ 
      month++; 
    } 
    } else { 
     day++; 
    }  
} 
1

EDIT現在の月の最大日を確認し、現在の日がこの最大日を超えていないかどうかを確認してください:

int maxDay; 
switch (month) { 
case 1: maxDay = 31; break; 
case 2: maxDay = isLeapYear() ? 29 : 28; break; 
case 3: maxDay = 31; break; 
// ... other months ... 
case 12: maxDay = 31; break; 
default: throw new InvalidDateArgumentsException(); 
} 
if (isLeapYear()) { 
    maxDay = 29; 
} 
if (day > maxDay) { 
    throw new InvalidDateArgumentsException(); 
} 
+0

ov申し訳ありません、私はあなたの時間を取った、私の英語はあまり良くありません。日付クラスを作成する必要があります。 – meert

+0

非常にありがとうございます:) – meert

関連する問題