日付を含む文字列をchar配列に変換し、その月を抽出して変換しようとしています。Android:Array Index Of Boundsエラー
私はAPIを使用していますが、サーバーは「2015-04-10」の形式で日付を提供しています。これを2015年4月10日に変換しようとしています。
- サーバから受信した日付を格納する文字列が文字列です。
- 文字列全体をchar配列に変換しています。
- 私はこの配列をループして、3つの配列に分けています: YEAR、MONTH、DAY。
- これらの配列を別々に文字列に変換しています。
- 次に、 '月'文字列と値を比較し、if-else条件を使用して月名を割り当てます。
- 最後に、私が望む順序に従って3つの文字列を追加します。
Androidのメーカーは言う:ここ
java.lang.ArrayIndexOutOfBoundsException: length=2; index=5
が私のコードです:java.lang.ArrayIndexOutOfBoundsException: length=2; index=5
は(私がマークされています:
//TODO: Here lies the method which will apparently convert the movie string to human read-able format...... Use it with caution.
char release[] = temp.toCharArray();
Log.d("LOG", release.toString());
char date[] = new char[2];
char year[] = new char[4];
char month[] = new char[2];
for (int i = 0; i < 11; i++) {
try {
if (i > 4 && i < 7) {
month[i] = release[i];
}
if (i < 4) {
year[i] = release[i]; // ---> Android Studio says error on this line...
}
if (i > 7 && i < 10) {
date[i] = release[i];
}
} catch (Error error) {
error.printStackTrace();
}
}
String monthString = month.toString();
String dateString = date.toString();
String yearString = year.toString();
String finalReleaseDate;
if (monthString.contentEquals("01")) {
monthString = "January";
} else if (monthString.contentEquals("02")) {
monthString = "February";
} else if (monthString.contentEquals("03")) {
monthString = "March";
} else if (monthString.contentEquals("04")) {
monthString = "April";
} else if (monthString.contentEquals("05")) {
monthString = "May";
} else if (monthString.contentEquals("06")) {
monthString = "June";
} else if (monthString.contentEquals("07")) {
monthString = "July";
} else if (monthString.contentEquals("08")) {
monthString = "August";
} else if (monthString.contentEquals("09")) {
monthString = "September";
} else if (monthString.contentEquals("10")) {
monthString = "October";
} else if (monthString.contentEquals("11")) {
monthString = "November";
} else if (monthString.contentEquals("12")) {
monthString = "December";
}
finalReleaseDate = dateString + " " + monthString + ", " + yearString;
movieModel.setReleaseDate(finalReleaseDate);
logcatにメッセージがある( 'TEMP' は、日付を含む文字列です) )このエラーが表示される行...)
助けてください!
SimpleDateFormatを使用すると、多くの苦痛が軽減されます。https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html –
明確なエラーは、 'i = 5'だから' month [i] '例外、いくつかのデバッグを行い、上記の提案に従ってください –
あなたはサイズ2の配列を宣言しています: char month [] = new char [2]; および(I = 0 int型、私はこの より大きいループ作る; [I] 4 && iは<7){ 月[I] =放出を; } ... あなたの配列でローカルインデックスを使用する必要があります – rodrigo