我目前正在创建一个类似于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。我怎么解决这个问题?感谢
答案 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;
或某些虚拟值。