Karlo・デ・レオン:
私は、カレンダーの12ヶ月間は、アレイにされたコード、コードはその後、月を要求し、それが10ヶ月先に入力された月の出力を構築しようとしています。(例えば1月で、出力は11月ティル2月からになります。入力)私はトラブルインデックスがある場合の例I入力8月のために、12を超えると、スタートにインデックスバックを元に戻すを抱えている、それは6月に、出力9月になっていますが、代わりにそれは12月で停止し、範囲外と言います。ありがとうございました
String months[];
String choice;
months = new String[13];
months[0] = null ;
months[1] = "January";
months[2] = "February";
months[3] = "March";
months[4] = "April";
months[5] = "May";
months[6] = "June";
months[7] = "July";
months[8] = "August";
months[9] = "September";
months[10] = "October";
months[11] = "November";
months[12] = "December";
System.out.print("Enter Month : ");
choice= a.nextLine();
if (choice.equals("August")) {
for(int i=8; i<i+10; i++) {
String result= months[i];
System.out.println(result);
}
}
ティムBiegeleisen:
印刷に月を選択する際に係数を使用します。
int start = 8;
if ("August".equals(choice)) {
for(int i=start; i < start+10; i++) {
String result= months[i % 12];
System.out.println(result);
}
}
これは、あなたの定義されていることを前提としmonths
て配列を:
String[] months = new String[12];
months[0] = "January";
months[1] = "February";
// ...
months[11] = "December";
ここでの考え方は、アレイから月を選択するために使用されるインデックスを周りにラップすることです。ダミー変数はi
、値12を打つ時に、再びゼロにラップアラウンドします。
サイドノート:それは比較のLHSにリテラルを置くことによって、変数に文字列リテラルを比較することは常に良いです。私が使用したバージョンは、NULLポインタ例外に免疫があります。あなたが使用されたバージョンではありません。