2017-10-11 13 views
0

私はこの問題を解決しようとしています。曜日(月曜日〜日曜日)に対応する1から7までの数字を入力し、次に0から20までの数字を追加します)、プログラムは曜日を返します。私の現在のソリューションは、「日曜日」を除いて機能します。Java:単純な配列とmod

public static void main(String[] args) { 
    int day; 
    int num; 
    int newDay; 
    String [] days = new String[] {"Monday", "Tuesday", "Wednesday", "Thursday", 
            "Friday", "Saturday", "Sunday"}; 
    System.out.println("Enter the day and the number to add"); 
    Scanner scnr = new Scanner(System.in); 
    day = scnr.nextInt(); 
    num = scnr.nextInt(); 
    newDay = (num + day) % 7; 
    System.out.println(newDay); 
    System.out.println("The new day is " + days[newDay - 1]); 
} 

ご覧のとおり、プログラムが「日曜日」にヒットすると、配列は範囲外になります。 「newDay = 0、newDay = 7を設定すれば」と簡単に言うことができますが、別の解決方法があるかどうかを確認したいと思います。

ありがとうございました!

+0

"newDay"が0の場合、問題がどこにあるかを認識できます。 – LHCHIN

答えて

2

あなたがやっていることの背後にある数学や論理を完全には理解していませんが、私はエラーを説明(そして修正)できると思います。コードの次の行に:

newDay = (num + day) % 7; 

newDayが取り得る値は0と6の間で包括的でなければなりません。

System.out.println("The new day is " + days[newDay]); 

daysは、7つの要素、0から6包括的にインデックスによってアドレスを持っているので、これは理にかなって:だから、あなたが以下のように日のあなたの配列にアクセスしたいと思うように私には思えます。

関連する問題