我最近开始使用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);
}
提前谢谢!
编辑:我很抱歉,我忘了张贴一半的意图! 例如,如果我给我的程序一个输入&#34; 1,1,1&#34;它输出0,0,0但它应输出&#34; 1,1,1和#34;无论我输入什么,它都会这样做。答案 0 :(得分:2)
在此检查中
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:
检查是否&gt; 0 =&gt;输入设为1
之后:检查是否&lt; 0 =&gt; false,所以设置为0