public class MonthName {
public static String month_name(int month) {
String result;
if (month == 1) {
result = "January";
} else if (month == 2) {
result = "February";
} else if (month == 3) {
result = "February";
} else if (month == 4) {
result = "February";
} else if (month == 5) {
result = "February";
} else if (month == 6) {
result = "February";
} else if (month == 7) {
result = "February";
} else if (month == 8) {
result = "February";
} else if (month == 9) {
result = "February";
} else if (month == 10) {
result = "February";
} else if (month == 11) {
result = "February";
} else if (month == 12) {
result = "February";
}
return result;
}
public static void main(String[] args) {
System.out.println("Month 1: " + month_name(1));
System.out.println("Month 2: " + month_name(2));
System.out.println("Month 3: " + month_name(3));
System.out.println("Month 4: " + month_name(4));
System.out.println("Month 5: " + month_name(5));
System.out.println("Month 6: " + month_name(6));
System.out.println("Month 7: " + month_name(7));
System.out.println("Month 8: " + month_name(8));
System.out.println("Month 9: " + month_name(9));
System.out.println("Month 10: " + month_name(10));
System.out.println("Month 11: " + month_name(11));
System.out.println("Month 12: " + month_name(12));
System.out.println("Month 43: " + month_name(43));
}
}
所以我已经在结果中声明了相关字符串的值,但它仍然说我的变量'result'可能没有被初始化。
我正在尝试实现类似于this的输出。 任何人都可以帮助我吗?谢谢!
答案 0 :(得分:3)
如果您的变量月份可能为空或者某些< 1或> 12,则会发生这种情况。您可以简单地删除if-else
树中的最后一个if,例如:
public class MonthName {
public static String month_name(int month) {
String result = "";
if (month == 1) {
result = "January";
} else if (month == 2) {
result = "February";
} else if (month == 3) {
result = "February";
} else if (month == 4) {
result = "February";
} else if (month == 5) {
result = "February";
} else if (month == 6) {
result = "February";
} else if (month == 7) {
result = "February";
} else if (month == 8) {
result = "February";
} else if (month == 9) {
result = "February";
} else if (month == 10) {
result = "February";
} else if (month == 11) {
result = "February";
} else {
result = "February";
}
return result;
}
public static void main(String[] args) {
System.out.println("Month 1: " + month_name(1));
System.out.println("Month 2: " + month_name(2));
System.out.println("Month 3: " + month_name(3));
System.out.println("Month 4: " + month_name(4));
System.out.println("Month 5: " + month_name(5));
System.out.println("Month 6: " + month_name(6));
System.out.println("Month 7: " + month_name(7));
System.out.println("Month 8: " + month_name(8));
System.out.println("Month 9: " + month_name(9));
System.out.println("Month 10: " + month_name(10));
System.out.println("Month 11: " + month_name(11));
System.out.println("Month 12: " + month_name(12));
System.out.println("Month 43: " + month_name(43));
}
}

这表示你的变量必须介于1到12之间,否则你应该抛出异常。但无论如何,我不会一直使用那些if-else树。无论如何,冗余太多了。
这相反:
switch (month) {
case 1: result = "January";
break;
case 2: result = "February";
break;
case 3: result = "March";
break;
case 4: result = "April";
break;
case 5: result = "May";
break;
case 6: result = "June";
break;
case 7: result = "July";
break;
case 8: result = "August";
break;
case 9: result = "September";
break;
case 10: result = "October";
break;
case 11: result = "November";
break;
case 12: result = "December";
break;
default: result = "Invalid month";
break;
}
答案 1 :(得分:1)
局部变量应在使用前初始化。它们没有默认值
初始化
String result="";
答案 2 :(得分:1)
由于month
只是int
,因此它可以采用1
- 12
以外的值(您的if
/ else/if
结构处理)。
要消除错误,您可以将其初始化为空String
,但是,您可能需要考虑错误情况。
例如,该方法应该做什么,如果传递的内容不在1
- 12
范围内?
答案 3 :(得分:1)
变量result
尚未初始化。当输入介于1和12之间时,result
将只包含一个值。
您可以在声明变量
时尝试此操作String result = "";
或这样,您不需要添加另一行来将结果设置为错误。
String result = "error";