【问题标题】:error: the < operator is undefined for the arguments type(s) Double[], double错误:未为参数类型定义 < 运算符 Double[], double
【发布时间】:2015-12-14 04:48:08
【问题描述】:

我知道这是非常基本的,但在针对数组中的对象进行测试时,我无法理解使用 &lt;。

我想针对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&lt;minimum 核对什么?
  • 你知道ruleGrades是一个3D数组,对吧?
  • 你确定你想要达到的目标吗? grades&lt;minimum 没有任何意义。你想比较什么?
  • 所以基本上 ruleGrades 包含双打,每个元素有 2 个等级,这就是我使用 Double[][] 的原因,所以在此之前 ruleGrades 填充了双打。现在我想比较元素并确保它们小于 2,然后进入 IF 并将其乘以概率。因此,例如,如果 ruleGrades[0][0] = 1.7,1.9 那么我想将这些双精度值中的每一个与规则概率相乘,并将其保存在另一个数组中,我称之为 min
  • @ukbaz ‘ruleGrades contains doubles’ 不,它包含 doubles 的数组。 “每个元素有 2 个等级,这就是我使用 Double[][] 的原因”这没有任何意义。两个doubles 适合Double[]。 ‘ruleGrades[0][0] = 1.7,1.9’。这也没有任何意义。 ruleGrades[0][0] 是一个 single 值。我认为您需要阅读多维数组。

标签: java arrays loops multidimensional-array arraylist


【解决方案1】:

实际上,您已经在内部 for 循环中声明了数组,并将整个数组与单个双精度值进行比较。

grades &lt; minimum 是问题

for(Double[] grades : ruleGrades.get(a))
{
    if(grades is an array of Double < minimum is a double )  //error over here
     {

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 2016-01-26
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 2021-01-29
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多