0

我目前正在用 Java 创建一个类似于下面的程序:它要求初始化变量 AC。

double AC;
System.out.println("Please choose A or B")

If(Condition to see if it A)
{
AC = 1
}
else if(Condition to see if it B)
{
AC = 2
}
else 
{
System.out.println("Please Enter a valid choice!")
}

double ab = AC * 2

这将给出“必须初始化变量 AC”的错误。造成这种情况的原因是如果用户不选择 A 或 B,则在双 ab 中将没有 AC 可使用。我该如何解决这个问题?谢谢

4

5 回答 5

1

这就是它所说的:您必须确保AC在使用它之前进行初始化。

你的问题是,AC如果你落到最后,那没有任何价值else

你可以给它一个默认值:

double AC = 33.2; // or Double.NaN if you prefer
System.out.println("Please choose A or B")
...
于 2012-12-15T20:36:42.447 回答
0

在 Java 7 中,您可以将 switch 与字符串一起使用

    switch (choose) {
    case "A":
        AC = 1;
        break;

    case "B":
        AC = 2;
        break;

    default:
        AC = -1;
        break;
    }
于 2012-12-15T20:46:31.087 回答
0

局部变量和原语应该在使用前初始化,因为你会知道从值中期望什么

因此,您必须初始化变量的值,例如AC = <<any value>>;

请考虑以下示例

int a;  // Valid
int b;
println("a=" + b);  // Not valid since b's value has never been assigned
于 2012-12-15T20:39:40.057 回答
0

这里有两件事:

  • 执行的else子句仅请求使用有效数字。即使这样可以编译,通过程序的流程也会不正确,因为该值永远不会重新建立为有效值;也就是说,您不会再循环检查答案。

  • else子句不尝试将值分配给AC,这是编译器查看是否AC已分配的位置之一;不能保证将遵循其他两个代码路径中的任何一个,但else始终遵循。它在那里看不到它,所以你得到“变量可能没有被初始化”错误。

于 2012-12-16T06:59:56.743 回答
-1

您只需要初始化 AC,因为“如果”的任何选项都不可能。做就是了

double AC = -1;

或一些虚拟值。

于 2012-12-15T20:37:12.010 回答