我一直在尝试将JavaScript函数转换为Java方法,从而通过参数传递一个数字,如果两个并发数字甚至是连字符“-”,它们之间将被放置。
只要最后一位数字不是偶数,它就可以正常工作,即使是偶数,我也会遇到超出范围的错误,我认为这与使用arr2.get(i + 1)
的if语句有关,其中条件的第一部分是,但是由于到达列表的末尾而无法满足第二个要求。这里有一种简单的方法可以纠正逻辑吗?
我对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);
}
}
还有
true
。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);
}
最佳答案
可以将其更改为:
for(int i = 0; i < arr2.size()-1; i++) {
还是不要检查
i+1
是否i ==arr2.size()