我最近开始使用 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);
}
缺少一个else。 将其更正为
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
之后:检查< 0 => false,因此设置为0
关于java - 元素未添加到数组列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26206823/