我最近开始使用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