[英]Arraylist giving weird result
所以我试图解决一个问题(规模问题),但结果不是我所期望的,特别是,我不明白为什么它给了我这些数字。 内联if(rep.indexOf(i) == 1)
我正在尝试检查 ArrayList 值是否为真以将权重添加到左侧,但如果它的错误将其添加到右侧。 我尝试使用值 TRUE 或 FALSE 作为参数,但它给出了错误,所以我只是将值 1 用于测试以找出结果数字。 预期结果应该是 20,因为我在左侧添加了 5 个真值。 R=0, L=1+2+3+4+10=20, F=|20-0|=20
import java.util.*;
import java.lang.Math;
class Untitled {
public static void main(String[] args) {
ArrayList<Double> weight = new ArrayList<Double>( );
ArrayList<Boolean> rep = new ArrayList<Boolean>( );
rep.add(true); rep.add(true); rep.add(true); rep.add(true);rep.add(true);
weight.add(1.0); weight.add(2.0); weight.add(3.0); weight.add(4.0); weight.add(10.0);
System.out.println(ScalesFitness(rep,weight));
}
public static double ScalesFitness(ArrayList<Boolean> rep, ArrayList<Double> weights) {
System.out.print(rep);
System.out.println();
double left = 0, right = 0, scalesolution =0;
for(int i=0; i<rep.size(); i++)
{
if(rep.indexOf(i) == 1)
{
left = left + weights.indexOf(i);
System.out.println("value of right side"+rep.indexOf(i));
}
else {
right = right + weights.indexOf(i);
System.out.println("value of right side"+rep.indexOf(i));
}
}
//}
scalesolution = Math.abs(left-right);
return scalesolution;
}
}
结果:
[true, true, true, true, true]
value of right side-1
value of right side-1
value of right side-1
value of right side-1
value of right side-1
5.0
提前致谢
rep.indexOf(i)
这不会检索由i
标记的 position 的元素:它将返回作为参数传递的元素的 position(如果存在)。 如果它不存在,它将返回-1。
从文档:
public int indexOf(Object o)
返回此列表中指定元素第一次出现的索引,如果此列表不包含该元素,则 > 或 -1。 更正式地说,返回满足 (o==null?get(i)==null: o.equals(get(i))) 的最低索引 i,如果没有这样的索引,则返回 -1。
由于 arraylist 中没有包含i
提供的任何值的元素,因此您将收到 -1 作为该调用的结果。
你可能需要的是调用这个其他方法:
rep.get(i)
public E get(int index)
返回此列表中指定 position 处的元素。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.