使用开关块时遇到“未初始化变量”错误。
这是我的代码:
public static void foo(int month)
{
String monthString;
switch (month)
{
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
}
System.out.println(monthString);
}
错误:
Switch.java:17: error: variable monthString might not have been initialized
System.out.println (monthString);
据我所知,当您尝试访问一个尚未初始化的变量时会发生此错误,但是当我在switch块中为其赋值时,是否没有初始化它?
同样,即使月份是编译时常量,我仍然会收到相同的错误:
public static void foo()
{
int month = 2;
String monthString;
switch (month)
{
case 1: monthString = "January";
break;
case 2: monthString = "February";
break;
}
System.out.println(monthString);
}
如果month
不是1
,2
则执行路径中没有在monthString
引用之前初始化的语句。即使is
,编译器也不会假定该month
变量保留其2
值。month``final
在JLS,第16章,关于“明确赋值”的谈判,并在其下一个变量可以是条件,它引用之前“明确赋值”。
除了条件布尔运算符&&,||和?的特殊处理外 :和布尔值常量表达式,在流分析中不考虑表达式的值。
monthString
在引用变量之前,未明确分配该变量。
在switch
块之前对其进行初始化。
String monthString = "unrecognized month";
或default
在switch
语句中的情况下将其初始化。
default:
monthString = "unrecognized month";
或抛出异常
default:
throw new RuntimeExpception("unrecognized month " + month);
问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事
问题内容: 当我尝试编译时: 我得到这些错误: 在我看来,我在方法的顶部初始化了它们。怎么了 问题答案: 你声明了它们,但没有初始化它们。初始化它们是将它们设置为等于一个值: 因为未初始化变量,但在循环中增加了变量(例如),因此会收到错误消息。 Java原语具有默认值,但如下一位用户所述 当声明为类成员时,它们的默认值为零。局部变量没有默认值
所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!
我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我
我使用的是Netbeans,编译器说变量可能没有初始化。这是什么意思?
我不知道这段代码有什么问题,也不知道为什么会出现错误: 变量isPrime可能尚未初始化 这是完整的代码: