我最近开始使用ArrayLists而不是Arrays,因此我编写了一个简单的程序,该程序应将数组中所有正整数都更改为1,将负整数更改为-1,将所有0更改为0。
现在我不知道为什么,但是我的代码无法正常工作,因为我还没有ArrayLists的经验,请您指出正确的方向吗?
这是我的代码:

private static ArrayList<Integer> ja = new ArrayList<Integer>();
private static String j = null;
private static void keskmine() {
    System.out.println("Please enter an array of integers:");
    j = sc.nextLine();
    ArrayList<String> bitsj = new ArrayList<String>(Arrays.asList(j.split(",")));
    for(int i = 0; i < bitsj.size(); i++){
        ja.add(Integer.parseInt(bitsj.get(i).trim()));
    }
    for(int i = 0; i < ja.size(); i++){

        if(ja.get(i) > 0){
            ja.set(i, 1);
        }if(ja.get(i) < 0){
            ja.set(i, -1);
        }else{
            ja.set(i, 0);
        }
    }
    System.out.println(ja);
}


先感谢您!

编辑:很抱歉,我忘了张贴我打算发布的一半!
例如,如果我给程序输入“ 1、1、1”,则输出0、0、0,但应输出“ 1、1、1”,并且对输入的内容进行处理。

最佳答案

在这张支票上

if(ja.get(i) > 0){
    ja.set(i, 1);
}
if(ja.get(i) < 0){
     ja.set(i, -1);
}else{
    ja.set(i, 0);
}


另一个丢失。
改正为

if(ja.get(i) > 0){
    ja.set(i, 1);
} else if(ja.get(i) < 0){
     ja.set(i, -1);
} else {
    ja.set(i, 0);
}



您当前正在首先检查该数字是否大于0。此后,您始终会检查该数字是否小于0。

例如:您有一个42:
检查> 0 =>条目是否设置为1
之后:检查 false,因此设置为0

08-25 14:02