gpt4 book ai didi

java - (初学者)意外的类型错误

转载 作者:行者123 更新时间:2023-12-01 22:13:10 25 4
gpt4 key购买 nike

我的代码有什么问题吗?错误是“意外类型”。它是if (year % 4.0 = 2.0)部分,错误消息是

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

代码如下:

import java.util.Scanner;

public class assignment4part2 {

public static void main(String[] args) {

Scanner input = new Scanner(System.in);
System.out.println("Enter a number of a month");
double month = input.nextDouble();
System.out.println("Enter a year");
double year = input.nextDouble();
if (month == 1.0) {
System.out.println("January " + year + " had 31 days.");
} else if (month == 2.0) {
if (year % 4.0 = 0.0) {
System.out.println("February " + year + "had 29 days.");
} else {
System.out.println("February " + year + "had 28 days.");
}
} else if (month == 3.0) {
System.out.println("March");
}
}
}

最佳答案

正如@Maxime所说,你需要 ==而不是= 。这是因为编译器期望 if 内有一个 boolean 值。声明,以及 =运算符返回其右侧的值。 (在本例中为 double )。

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

  1. 使用==时要小心与双类型。一般来说,使用 EPSILON 被认为是更好的做法。而不是在处理 float 时检查相等性:

    if (year % 4.0 == 0.0)

    应该是:

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

  2. 使用%由于舍入错误和 float 的存储方式, float 运算符可能会给您带来意外的结果。如果您需要%运算符,请考虑使用某种类型的整数来代替。从您发布的代码来看,使用 int 似乎完全适合您或long而不是double 。 (您可以阅读有关 double 和 % here 的更多信息)。

  3. 您似乎正在使用多个 if else纷纷发表声明。有一个专门针对您想要实现的控制流类型的构造,称为 switch陈述。 (您可以阅读有关 switch 语句 here 的更多信息)。再次强调,使用带有浮点变量的 switch 语句要小心。

  4. 最后,如果您使用您正在使用的语言标记您的问题,将来将有助于人们提供更好的答案。 (在本例中为 Java)。

关于java - (初学者)意外的类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31523703/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com