gpt4 book ai didi

java - 使用 ArrayList 时出现越界错误

转载 作者:行者123 更新时间:2023-12-01 18:06:52 25 4
gpt4 key购买 nike

我一直在尝试将 JavaScript 函数转换为 Java 方法,其中通过参数传递数字,如果两个并发数字甚至是破折号“-”,则会在它们之间放置一个破折号。

只要最后一位数字不是偶数,就可以正常工作,如果是偶数,我会收到越界错误,我假设该错误与使用 arr2.get(i + 1) 的 if 语句有关。其中条件的第一部分是 true但由于到达列表末尾而无法满足第二个。有没有简单的方法来纠正这里的逻辑?

我对 Java 相当陌生,由于某些数据结构的行为方式不同,我正在努力解决一些可以在 JavaScript 中轻松解决的问题。

public void dash(int someNumber) {
int num = someNumber;
String str = String.valueOf(num);
String arr1[] = str.split("");
String result = "";
ArrayList<Integer> arr2 = new ArrayList<Integer>();
for (int i = 0; i < arr1.length; i++) {
int temp = Integer.parseInt(arr1[i]);
arr2.add(temp);
}

for(int i = 0; i < arr2.size(); i++) {

if (arr2.get(i) % 2 == 0 && arr2.get(i + 1) % 2 == 0) {

result = result + arr2.get(i) + "-";

}

else{
result = result + arr2.get(i);
}


}
System.out.println(result);
}

}

还有main .

public class mainController {

public static void main(String[] args) {
DashSort ds = new DashSort();
ds.dash(245461);

}

}

将 if 语句更改为此并且似乎工作正常。

    if (i + 1 == arr2.size()) {

result = result + arr2.get(i);
}
else if (arr2.get(i) % 2 == 0 && i < arr2.size() && arr2.get(i + 1) % 2 ==0) {


result = result + arr2.get(i) + "-";
}

else{
result = result + arr2.get(i);
}

最佳答案

将其更改为:

for(int i = 0; i < arr2.size()-1; i++) {

或者不检查i+1如果i ==arr2.size()

关于java - 使用 ArrayList 时出现越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35748718/

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