所以我想弄清楚为什么我的IDE不接受这段代码。它给我的错误是缺少return语句。但经过一番挖掘,我发现当我已经有了回报声明时,我真的不需要休息了。这是我的密码。
月份、日期和年份是已经在私有构造函数中初始化的私有变量。每个切换案例都应该采用特定格式的日期输入和日期输出。
public String toString(int format) {
switch (format) {
case 1:
return month + "/" + day + "/" + year;
case 2:
String pattern = "00";
DecimalFormat decimalFormat = new DecimalFormat(pattern);
return decimalFormat.format(month) + "/" +
decimalFormat.format(day) + "/" +
year;
case 3:
String abbrev = "JanFebMarAprMayJunJulAugSepOctNovDec";
return abbrev.substring(month * 3 - 3, month * 3 - 1) +
"/" + day + "/" + year;
case 4:
switch (month) {
case 1:
return "January" + " " + day + ", " + year;
case 2:
return "February" + " " + day + ", " + year;
case 3:
return "March" + " " + day + ", " + year;
case 4:
return "April" + " " + day + ", " + year;
case 5:
return "May" + " " + day + ", " + year;
case 6:
return "June" + " " + day + ", " + year;
case 7:
return "July" + " " + day + ", " + year;
case 8:
return "August" + " " + day + ", " + year;
case 9:
return "September" + " " + day + ", " + year;
case 10:
return "October" + " " + day + ", " + year;
case 11:
return "November" + " " + day + ", " + year;
case 12:
return "December" + " " + day + ", " + year;
default:
System.out.println("Error please try again");
break;
}
default:
System.out.println("Error please try again");
}
}
您的方法应该返回一个String。
这意味着:任何路径;退出";需要返回一个值。
default:
System.out.println("Error please try again");
不返回值。它打印一条消息。
换句话说:您的两个默认情况应该返回一个字符串,例如"invalid input"
。但在现实世界中,这不是你想要的。
您的代码似乎是关于某种Date类的。并且您的toString(int)
实现允许无效数据。这就是你的问题开始的地方!您应该在某个时候验证字段。但当你被要求格式化它时,这一点是而不是。如果你在那一点上这样做,该方法应该抛出一个异常来指示:";因为数据不好而不能做我的工作;。
因此,有两种选择:要么您的代码在用户提供所有用户输入时验证这些输入(并拒绝坏数据(,要么您的toString()
方法应该对无效数据抛出异常。