我一直在尝试将JavaScript函数转换为Java方法,从而通过参数传递一个数字,如果两个并发数字甚至是一个破折号“ - ”将放置在它们之间。使用ArrayList出界错误
这工作正常,只要最后一位数字不是偶数,如果它甚至我得到一个越界误差,我假设是使用if语句使用arr2.get(i + 1)
其中第一部分条件是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 (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);
}
因此,您尝试获取不存在的元素。它令你感到惊讶,导致问题?如果我是最大可能的指数,不要尝试获取元素(i + 1) – Stultuske
你试图跟踪你的代码一步一步吗? (使用Eclipse \ Idea调试器) –