private int getBirthdayYear(){
Random r1 = new Random();
int x = r1.nextInt(1000);
int year = 1000+ x;
return birthdayYear;
}
private String getBirthday(){
int year = getBirthdayYear();
Random r2 = new Random();
int y = r2.nextInt(11);
String monthStr;
int month = 1 + y;
switch (month) {
case 1: monthStr = "January";
break;
case 2: monthStr = "February";
break;
case 3: monthStr = "March";
break;
case 4: monthStr = "April";
break;
case 5: monthStr = "May";
break;
case 6: monthStr = "June";
break;
case 7: monthStr = "July";
break;
case 8: monthStr = "August";
break;
case 9: monthStr = "September";
break;
case 10: monthStr = "October";
break;
case 11: monthStr = "November";
break;
case 12: monthStr = "December";
break;
default: monthStr = "Invalid";
break;
}
Random r3 = new Random();
**int day;// day variable declared as int**
if(month == 1||month == 3||month == 5||month == 7||month == 8||month == 10||month == 12){
int z1 = r3.nextInt(30);
day = 1 + z1;
}
else if(month == 2||month == 4||month == 6||month == 9||month == 11){
int z2 = r3.nextInt(29);
day = 1 + z2;
}
else if(month == 2 & year%4 ==0){
int z3 = r3.nextInt(28);
day = 1 + z3;
}
else if(month == 2 & year%4 != 0){
int z4 = r3.nextInt(27);
day = 1 + z4;
}
**birthday = monthStr + " " + day + "th " + year;// error here. day variable is not initialized
return birthday;**
}
在Java中,不能使用可能未初始化的变量。“uninitialized”表示变量可能未设置为任何值。如果编译器不能证明变量始终是初始化的,就会产生一个错误。
int a;
// a is uninitialized
if(r.nextInt(10) < 2)
a = 5;
// a has an 80% chance of still being uninitialized
System.out.println(a); // error: a might not be initialized.
在您的情况下:
int day;
// day is uninitialized
if(month == 1||month == 3||...){
int z1 = r3.nextInt(30);
day = 1 + z1;
}
else if(month == 2||month == 4||month == 6||month == 9||month == 11){
int z2 = r3.nextInt(29);
day = 1 + z2;
}
else if(month == 2 & year%4 ==0){
int z3 = r3.nextInt(28);
day = 1 + z3;
}
else if(month == 2 & year%4 != 0){
int z4 = r3.nextInt(27);
day = 1 + z4;
}
// if the month wasn't between 1 and 12, day is still uninitialized
编译器不够聪明,无法检测月份
始终介于1和12之间。修复方法是确保day
始终设置为某个值,即使month
不在该范围内。
这样做的一种方法:
int day;
// day is uninitialized
if(month == 1||month == 3||...){
int z1 = r3.nextInt(30);
day = 1 + z1;
}
else if(month == 2||month == 4||month == 6||month == 9||month == 11){
int z2 = r3.nextInt(29);
day = 1 + z2;
}
else if(month == 2 & year%4 ==0){
int z3 = r3.nextInt(28);
day = 1 + z3;
}
else if(month == 2 & year%4 != 0){
int z4 = r3.nextInt(27);
day = 1 + z4;
}
// THIS PART IS NEW
else
day = -1; // this line will never actually run
现在编译器可以知道,无论发生什么,day
总是设置为在该语句结束之后的某个值。
请注意,day=-1;
从未实际运行。只有这样,编译器才能证明day
总是有一个值。
我在这里看到过类似的问题,如果这看起来像是重复的,我很抱歉,但是类似问题的答案对我没有帮助。所以我有一个方法,它是类的一部分。这里是: 错误表明变量min可能尚未初始化。我不明白这怎么可能是真的。我觉得变量不可能不在for循环之外初始化。请帮忙。谢谢
本文向大家介绍tensorflow 初始化未初始化的变量实例,包括了tensorflow 初始化未初始化的变量实例的使用技巧和注意事项,需要的朋友参考一下 今日在Stack Overflow上看到一个问如何只初始化未初始化的变量,有人提供了一个函数,特地粘贴过来共大家品鉴: 通过tf.global_variables()返回一个全局变量的列表global_vars, 然后以python列表解析式的
问题内容: 我的Java程序中出现以下错误: Java变量未初始化错误…错误:变量nam和r未初始化位置类子级 但是并且已经初始化,但是我仍然遇到相同的错误。 问题答案: 不要获取 默认值 ,应在使用它们之前对其进行初始化,并使用main中的默认值进行初始化,这样就可以了。 顺便说一句,考虑为您的类和变量命名是有意义的。
问题内容: 我有一个方法创建一个,另一个方法更改字符串 我的编译器说它“可能尚未初始化”。 有人可以解释吗? 问题答案: 变量可能尚未初始化 在内部定义方法时,必须在其中初始化程序的每个变量中必须先使用一个值的地方。 同样重要的是,您的代码将永远无法正常运行,因为Java中的字符串是不可变的,因此您无法编辑字符串,因此应更改方法。 我将您的代码更改为类似的内容,但是我认为您的编辑方法应该做另一件事
所以我已经在结果中声明了相关字符串的值,但是它仍然说我的变量“result”可能还没有初始化。 我正在尝试实现与此类似的输出。任何人都可以帮我吗?谢谢!
我正在研究Euler Problem 9项目,其中说明: 毕达哥拉斯三元组是由三个自然数组成的集合 例如,3^2 4^2=9 16=25=52。 确实存在一个毕达哥拉斯三重态,其bc=1000。查找产品abc。 以下是我到目前为止所做的: 当我运行代码时,会出现以下错误: 注意:我的每个变量(a、b和c)都有不同的行号。 我想当我声明a、b和c为整数时,如果不赋值,默认值是0。 即使不是这样,在我