【发布时间】:2015-12-14 04:48:08
【问题描述】:
我知道这是非常基本的,但在针对数组中的对象进行测试时,我无法理解使用 <。
我想针对minimum(double)测试存储在二维数组中的ruleGrades,然后将其与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 语句中,我想检查第一个 double 是否小于 2.0,然后将其乘以概率,然后将其添加到 arraylist min。
但是我将如何为同一元素中的第二个值执行此操作。 例如 ruleGrades 包含:[1.7,1.9],[1.2,1.3] .... 然后我将 1.7 乘以概率(让我们说它的 1)并添加到 min 数组列表中的 Double[],所以 min 看起来像这样 [1,7]。但是我希望 1.9 也一样,并将其放在与 1.7 相同的元素中,所以 min 数组看起来像 [1.7,1.9]。 这就是为什么我添加了另一个 IF 语句,这是正确的吗?
在所有成绩都乘以概率并添加到最小数组列表后,我需要找到最大的。所以我做了一个 Double max[] 对吗?
很抱歉,我正在尝试阅读,但我真的很困惑。 感谢您迄今为止的所有帮助。
【问题讨论】:
-
数组何时以及如何小于数字?您希望与
grades<minimum核对什么? -
你知道
ruleGrades是一个3D数组,对吧? -
你确定你想要达到的目标吗?
grades<minimum没有任何意义。你想比较什么? -
所以基本上 ruleGrades 包含双打,每个元素有 2 个等级,这就是我使用 Double[][] 的原因,所以在此之前 ruleGrades 填充了双打。现在我想比较元素并确保它们小于 2,然后进入 IF 并将其乘以概率。因此,例如,如果 ruleGrades[0][0] = 1.7,1.9 那么我想将这些双精度值中的每一个与规则概率相乘,并将其保存在另一个数组中,我称之为 min
-
@ukbaz ‘
ruleGradescontainsdoubles’ 不,它包含doubles 的数组。 “每个元素有 2 个等级,这就是我使用Double[][]的原因”这没有任何意义。两个doubles适合Double[]。 ‘ruleGrades[0][0] = 1.7,1.9’。这也没有任何意义。ruleGrades[0][0]是一个 single 值。我认为您需要阅读多维数组。
标签: java arrays loops multidimensional-array arraylist