我正在尝试打印在if-else语句中初始化的String。但我有一个关于dateStr的错误可能没有在最后一行初始化。有什么建议吗? 这是代码:
int currentDay = LocalDateTime.now().getDayOfMonth();
int currentMonth = LocalDateTime.now().getMonthValue();
int currentYear = LocalDateTime.now().getYear();
String dateStr;
if (currentDay < 10 && currentMonth < 10){
dateStr = "0" + currentDay + "/0" + currentMonth + "/" + currentYear;
} else if (currentDay < 10 && currentMonth >= 10) {
dateStr = "0" + currentDay + "/" + currentMonth + "/" + currentYear;
} else if (currentDay >= 10 && currentMonth >= 10){
dateStr = currentDay + "/" + currentMonth + "/" + currentYear;
}
System.out.println(dateStr);
答案 0 :(得分:3)
您没有初始化dateStr
变量,并且编译器抛出错误,因为可能会导致您的if
块没有在运行时执行(因为currentDay
,currentMonth
的值,不满足条件),然后dateStr
变量没有指向任何,这导致错误,所以,有两种方法可以解决这个问题:
选项(1):初始化dateStr
变量
String dateStr = null;
选项(2):添加else
条件,如下所示:
if (currentDay < 10 && currentMonth < 10){
dateStr = "0" + currentDay + "/0" + currentMonth + "/" + currentYear;
} else if (currentDay < 10 && currentMonth >= 10) {
dateStr = "0" + currentDay + "/" + currentMonth + "/" + currentYear;
} else if (currentDay >= 10 && currentMonth >= 10){
dateStr = currentDay + "/" + currentMonth + "/" + currentYear;
} else {
dateStr="INVALID";
}
我强烈建议你练习始终正确初始化局部变量。您可能感兴趣的另一点是,您将不会遇到类/实例变量的问题,这些变量会自动初始化为默认值(与您需要初始化的局部变量不同)。
答案 1 :(得分:2)
您错过了else
案例String
may not have been initialized
。
否则将其初始化为默认值,例如null
或空字符串:
String dateStr = "";
答案 2 :(得分:2)
首先将其初始化为空字符串:
String dateStr =&#34;&#34 ;;
答案 3 :(得分:2)
String dateStr= null;
那是因为,如果没有满足任何条件,那该怎么办。
答案 4 :(得分:2)
是的,您必须将此变量初始化为函数的上下文并使用else
和if
,如下所示:
String dateStr = "";
if (currentDay < 10 && currentMonth < 10){
dateStr = "0" + currentDay + "/0" + currentMonth + "/" + currentYear;
} else if (currentDay < 10 && currentMonth >= 10) {
dateStr = "0" + currentDay + "/" + currentMonth + "/" + currentYear;
} else if (currentDay >= 10 && currentMonth >= 10){
dateStr = currentDay + "/" + currentMonth + "/" + currentYear;
}
System.out.println(dateStr);
正如您所做的那样,您只需将变量初始化为if
或else if
的上下文,这就是编译器检测到变量dateStr
未初始化为功能背景。
答案 5 :(得分:1)
您声明了一个变量,但没有对其进行初始化。要初始化,您需要这样做
String datestr = "";
答案 6 :(得分:1)
并非所有路径都为变量添加值,请执行此操作
...
else if (currentDay >= 10 && currentMonth >= 10){
dateStr = currentDay + "/" + currentMonth + "/" + currentYear;
} else {
dateStr = "it didn't work!";
}
...
答案 7 :(得分:1)
正如@JeanLogeart所述,添加else
条件会删除您的错误。
虽然,我会创建一个填充函数来减轻像这样的条件的需要:
private String padThatNumber(int number, int numberOfDigits){
StringBuilder sb= newStringBuilder();
sb.append(Integer.toString(number));
while(sb.length()<numberOfDigits){
sb.insert(0, "0");
}
return sb.toString();
}
答案 8 :(得分:0)
当currentDay&gt; = 10&amp;&amp; currentMonth&LT; 10 -5务必检查所有案例。同时尝试将街道初始化为空。 String s =&#34;&#34 ;;