gpt4 book ai didi

java - Android:数组索引越界错误

转载 作者:行者123 更新时间:2023-12-02 02:59:09 24 4
gpt4 key购买 nike

我正在尝试将包含日期的字符串转换为字符数组,然后提取月份并进行转换。

我正在使用API​​,服务器提供的日期格式为:“2015-04-10”,我正在尝试将其转换为:“2015年4月10日。”

  1. 我将从服务器收到的日期存储在字符串中。
  2. 我正在将整个字符串转换为字符数组。
  3. 我正在这个数组中运行一个循环,并将其分成三个数组:年月日。
  4. 我将这些数组分别转换为字符串。
  5. 然后,我将“月份”字符串与值进行比较,然后使用 if-else 条件为其分配月份名称。
  6. 最后,我将按照我想要的顺序添加三个字符串。

Android Studio 说:java.lang.ArrayIndexOutOfBoundsException: length=2;索引=5

这是我的代码:(“temp”是包含日期的字符串)

//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 中的消息是:java.lang.ArrayIndexOutOfBoundsException: length=2; index=5 (我已经标记了显示此错误的行..)

请帮忙!!

最佳答案

首先,您的方法并不是将数字月份转换为字符串月份的最佳方法。使用 DateSimpleDateFormat 进行转换应该更容易、更稳定。方法。

<小时/>

第二,您标记了错误的崩溃行。此崩溃 (java.lang.ArrayIndexOutOfBoundsException: ***length=2; index=5***) 告诉您索引为 5 数组长度为 4

if (i < 4) {
year[i] = release[i]; //index 5 cannot be called here and year lenght is 4
}
if (i > 4 && i < 7) {
month[i] = release[i]; //index 5 is called here and month lenght is 2
}
if (i > 7 && i < 10) {
date[i] = release[i];
}

发生崩溃是因为您正在调用 month[5] = release[5]; 并且月份长度仅为 2。

为了避免这种情况,请将代码更改为:

if (i<4) {
//2015 index 0,1,2,3
year[i] = release[i];
} else if (i>4 && i<7) {
//04 index 5,6
month[i-5] = release[i];
} else if (i>7 && i<10) {
//10 index 8,9
date[i-8] = release[i];
}
<小时/>

第三,如果你想通过这种方式获取年、月、日,这样更容易。

String [] date_splited = server_string.split("-");
String year = date_splited[0];
String month = date_splited[1];
String day = date_splited[2];

希望对您有帮助。

关于java - Android:数组索引越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42631814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com