我一直在尝试将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()

08-06 05:36