所以我正在尝试创建一个isValid方法来验证某个日期是否真实(即2016年3月31日有效,2/29/2001有效,因为它是闰年,2/30 / 2016年无效)
这是我的方法public boolean isValid()
`
{
//January
if (month == 1 && day <= 31) {
return true;
}
else {
return false;
}
//February
if (month == 2 && day <= 28) {
return true;
}
else {
if ((((year % 4) == 0) && ((year % 100) != 0)) || ((year % 400) == 0)) {
if (day == 29) {
return true;
}
else {
return false;
}
}
else {
return false;
}
}
//March
if (month == 3 && day <= 31) {
return true;
}
else {
return false;
}
//April
if (month == 4 && day <= 30) {
return true;
}
else {
return false;
}
//May
if (month == 5 && day <= 31) {
return true;
}
else {
return false;
}
//June
if (month == 6 && day <= 30) {
return true;
}
else {
return false;
}
//July
if (month == 7 && day <= 31) {
return true;
}
else {
return false;
}
//August
if (month == 8 && day <= 31) {
return true;
}
else {
return false;
}
//September
if (month == 9 && day <= 30) {
return true;
}
else {
return false;
}
//October
if (month == 10 && day <= 31) {
return true;
}
else {
return false;
}
//November
if (month == 11 && day <= 30) {
return true;
}
else {
return false;
}
//December
if (month == 12 && day <= 31) {
return true;
}
else {
return false;
}
}
`
现在,当我编译时,它表示存在无法访问的语句,基本上就是“if”。有人可以帮忙吗?我已经尝试了'if(true){return}'方法,但我找不到任何有用的东西。
答案 0 :(得分:3)
在你的第一个if语句中,无论结果如何都会返回,这意味着永远不会达到以下所有if语句,就好像你的第一个条件不符合它将会返回,如果是,它也会返回。
对此的修复是删除所有其他返回false路径并将else if if字符串中的所有if语句串起来,然后在结尾处返回false。
e.g。
if(){
...
}else if(){
...
}
return false;
答案 1 :(得分:0)
你的代码应该是elseif elseififif ... else ...
当你说if和else ..你的代码将以if或者其他结束..以后其他如果语句无法访问...
这是你得到的错误......将其他条件改为elseif
答案 2 :(得分:0)
您的代码永远不会转到第二个if语句,因为第一个(1月份)的其他部分将终止您的程序
您的代码必须如下:
if(month == 1)
{
if(day <= 31)
return true;
else
return false;
}
if(month==2)
{
----
----
}
答案 3 :(得分:0)
return **statement should be last statement of any method**
否则你可以使用变量代替直接返回语句,如
public boolean isValid()
{
boolean status=false;
if(condition)
{
status=true;
}
return status;
}