我知道这是相当基本的,但我有困难理解使用<
时测试对象在数组
我想测试存储在二维数组中的ruleGrades
与minimum
(double
),然后将其与probability
(double
)相乘。
ArrayList<Double[][]> ruleGrades = new ArrayList<Double[][]>();
ArrayList<Double> min= new ArrayList<Double>();
double minimum;
System.out.println("Rule Grades: "+ruleGrades.toString());
for(int a=0;a<ruleGrades.size();a++)
{
minimum=2.0;
System.out.println("A: "+a);
for(Double[] grades : ruleGrades.get(a))
{
if(grades<minimum) //error over here
{
Double prob=rule.getRules().get(a).getProbability();
minimum=grades.doubleValue()*prob.doubleValue(); //error
}
}
min.add(minimum);
}
max=0.0; //finding largest
for (int b = 0; b< min.size(); b++ )
{
if( min.get(b) > max)
{
max = min.get(b);
}
}
}
更新:
好的,我看到我不需要一个多维数组,我可以使用Double[]在第一个元素中有2个值。下面是我更新后的代码:
ArrayList<Double[]> ruleGrades = new ArrayList<Double[]>();
ArrayList<Double[]> min= new ArrayList<Double[]>();
System.out.println("Rule Grades: "+ruleGrades.toString());
for(int a=0;a<ruleGrades.size();a++)
{
Double [] minimum={2.0,2.0};
System.out.println("A: "+a);
for(Double grades : ruleGrades.get(a))
{
if(grades<minimum[0])
{
Double prob=rule.getRules().get(a).getProbability();
minimum[0]=grades.doubleValue()*prob.doubleValue();
}
if(grades<minimum[1])
{
Double prob=rule.getRules().get(a).getProbability();
minimum[1]=grades.doubleValue()*prob.doubleValue();
}
}
min.add(minimum);
}
Double [] max= {0.0,0.0}; //finding largest
for (int b = 0; b< min.size(); b++ )
{
for(Double mins : min.get(b))
{
if( mins> max[0])
{
max = min.get(b);
}
}
}
}
在我的第一个IF语句中,我想检查第一个双精度数是否小于2.0,然后乘以概率,然后将其添加到数组列表min中。
但是对于同一元素中的第二个值,我该怎么做呢?例如ruleGrades包含:[1.7,1.9],[1.2,1.3]....然后我用1.7乘以prob(假设它是1)并加上min数组列表中的Double[],所以min看起来像这样[1,7]。但然后我希望1.9相同,并将其放在与1.7相同的元素中,那么最小数组将看起来像[1.7,1.9]。这就是为什么我添加了另一个IF语句,这是正确的吗?
在所有的分数都乘以probb并加入到min数组列表后,我需要找到最大的一个。所以我做了一个Double max[],对吗?
对不起,我正在努力阅读,但我真的很困惑。谢谢大家的帮助。
实际上你已经在内部for循环中声明了数组,并将整个数组与单个双精度值进行比较。
grades < minimum
是问题
for(Double[] grades : ruleGrades.get(a))
{
if(grades is an array of Double < minimum is a double ) //error over here
{