我的代码出了什么问题?错误是"意外类型。" 它是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
答案 0 :(得分:2)
正如@Maxime所说,你需要==
而不是=
。
这是因为编译器需要在if
语句内部使用布尔值,而=
运算符返回其右侧的值。 (在这种情况下,双倍)。
还有一些与您的代码相关的评论,但不是问题:
使用双重类型的==
时要小心。通常,在使用浮点数时,使用EPSILON
而不是检查相等性被认为是更好的做法:
if (year % 4.0 == 0.0)
应该是:
if (Math.abs(year % 4.0 - 0.0) < EPSILON )
,其中EPSILON
是一个非常小的双精度值,用于指定year % 4.0
与0.0
的距离。0.0
。在这种情况下,减去%
显然是多余的,但在示例中使用它有助于说明模板。
使用带有浮点数的%
运算符可能会因舍入错误和存储浮点数的方式而产生意外结果。如果您需要int
运算符,请考虑使用某种类型的整数。根据您发布的代码,您似乎完全适合使用long
或double
而不是%
。 (您可以阅读有关双打和if else
here)的更多信息。
好像你一个接一个地使用多个switch
语句。有一个构造专门用于您希望实现的控制流类型,称为switch
语句。 (您可以阅读有关{{1}}语句here)的更多信息。同样,请小心使用带浮点变量的switch语句。
最后,如果您使用所使用的语言标记问题,将来会帮助人们提供更好的答案。 (在这种情况下,Java)。