不是对象的语句错误

时间:2017-03-24 00:11:45

标签: java object for-loop compiler-errors

我得到的是#34;而不是声明"我的代码中的错误,我不明白为什么 这是代码

          for (int i = 0; i < Champ.length; i++) {
        for (int j = 0; j < Champ[i].length; j++) {
            if (Champ[i][j].getLegume() != null) {
                Champ[i][j].getNbJoursMatLegume() - jour; //HERE IS THE ERROR ....
                System.out.print(Champ[i][j].getNbJoursMatLegume() + " ");
            }
        }
        System.out.println("");

    }

我的所有变量都已初始化并正常工作,但我不知道为什么我无法进行此操作

4 个答案:

答案 0 :(得分:2)

按照以前的写作

您在此处进行计算,但未将其存储在任何位置:

Champ[i][j].getNbJoursMatLegume() - jour;

因此您可以将其存储在本地变量

int result = Champ[i][j].getNbJoursMatLegume() - jour;

也许可以打印

System.out.println ("This is the value: " + result);

或根据您的代码,您可以设置值

Champ[i][j].setNbJoursMatLegume(Champ[i][j].getNbJoursMatLegume() - jour);

答案 1 :(得分:1)

您在此处进行计算,但未将其存储在任何位置:

Champ[i][j].getNbJoursMatLegume() - jour;

只需将其存储为:

int result = Champ[i][j].getNbJoursMatLegume() - jour;

答案 2 :(得分:1)

  

我的代码中出现“not a statement”错误,我不知道   为什么这里是代码

这段代码返回一个值而你没有将它赋值给变量,因此它不是一个语句而是一个表达式。

Champ[i][j].getNbJoursMatLegume() - jour; //HERE IS THE ERROR ....

而是获取返回的值并将其分配给变量:

int myResult =  Champ[i][j].getNbJoursMatLegume() - jour;

修改

  

是否可以通过更改getNbJoursMatLegume()变量   将整数jour减去它。但结果存储   在getNbJoursMatLegume()

Champ[i][j].setNbJoursMatLegume(Champ[i][j].getNbJoursMatLegume() - jour);

答案 3 :(得分:1)

你不能这样做,因为正如消息告诉你的那样,Champ[i][j].getNbJoursMatLegume() - jour;不是一个陈述,它是一个表达。第14章http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html中的JLS强制要求,“程序的执行顺序由语句控制,这些语句是为了它们的效果而执行的,没有值。”要成为一个语句,该行必须对表达式的值执行某些操作,例如将其分配给变量或将其传递给方法。

此外,遵循Java命名约定。