我一直在嘗試將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調試器) –