变量必须初始化

时间:2012-12-15 20:35:32

标签: java

我目前正在创建一个类似于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。我怎么解决这个问题?感谢

5 个答案:

答案 0 :(得分:1)

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

您的问题是AC如果您属于最后一个else,则没有任何价值。

您可以给它一个默认值:

double AC = 33.2; // or Double.NaN if you prefer
System.out.println("Please choose A or B")
...

答案 1 :(得分:0)

应该在使用之前初始化局部变量和基元,因为您可以知道从值

中得到什么

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

的值

请考虑以下示例

int a;  // Valid
int b;
println("a=" + b);  // Not valid since b's value has never been assigned

答案 2 :(得分:0)

在Java 7中,您可以使用带字符串的开关

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

    case "B":
        AC = 2;
        break;

    default:
        AC = -1;
        break;
    }

答案 3 :(得分:0)

这里有两件事:

  • 执行的else子句仅请求使用有效数字。即使这会编译,由于值永远不会重新建立为有效值,因此程序中的流程将是不正确的;也就是说,你没有循环再次检查答案。

  • else子句不会尝试为AC分配值,AC是编译器在分配else时查看的位置之一;不能保证将遵循其他两个代码路径中的任何一个,但{{1}} 总是。它无法在那里看到它,因此您得到“变量可能尚未初始化”错误。

答案 4 :(得分:-1)

你只需要初始化AC,因为“if”既没有选择也可能。只是做

double AC = -1;

或某些虚拟值。