(初学者)意外类型错误

时间:2015-07-20 18:25:14

标签: java loops

我的代码出了什么问题?错误是"意外类型。" 它是JPanel OutterPanel = this; this.addComponentListener(new ComponentAdapter() { @Override public void componentResized(ComponentEvent e) { contentArea.setPreferredSize(new Dimension(OutterPanel.getPreferredSize().width, 500)); } }); 部分,错误消息是

if (year % 4.0 = 2.0)

代码如下:

assignment4part2.java:18: error: unexpected type
               if (year / 4.0 = 0.0)
                    ^
  required: variable
  found:    value

1 个答案:

答案 0 :(得分:2)

正如@Maxime所说,你需要==而不是=。 这是因为编译器需要在if语句内部使用布尔值,而=运算符返回其右侧的值。 (在这种情况下,双倍)。

还有一些与您的代码相关的评论,但不是问题:

  1. 使用双重类型的==时要小心。通常,在使用浮点数时,使用EPSILON而不是检查相等性被认为是更好的做法:

    if (year % 4.0 == 0.0)

    应该是:

    if (Math.abs(year % 4.0 - 0.0) < EPSILON ),其中EPSILON是一个非常小的双精度值,用于指定year % 4.00.0的距离。0.0。在这种情况下,减去%显然是多余的,但在示例中使用它有助于说明模板。

  2. 使用带有浮点数的%运算符可能会因舍入错误和存储浮点数的方式而产生意外结果。如果您需要int运算符,请考虑使用某种类型的整数。根据您发布的代码,您似乎完全适合使用longdouble而不是%。 (您可以阅读有关双打和if else here)的更多信息。

  3. 好像你一个接一个地使用多个switch语句。有一个构造专门用于您希望实现的控制流类型,称为switch语句。 (您可以阅读有关{{1}}语句here)的更多信息。同样,请小心使用带浮点变量的switch语句。

  4. 最后,如果您使用所使用的语言标记问题,将来会帮助人们提供更好的答案。 (在这种情况下,Java)。