为什么我的方法 return 没有任何内容,即使我有打印语句?
Why doesn't my method return anything even though I have print statements?
当我试图在我的主要方法中调用 daysInaMonth 方法时,我得到这个错误:
DaysInMonth.java:34: error: missing return statement
}
^
1 error
我做错了什么?为什么方法调用不起作用?我已确保这两种方法 return 都是正确的数据类型。这是我的 class 文件:
import java.util.Scanner;
public class DaysInMonth {
public String daysInaMonth (int year_number, String month_name) {
if(year_number % 4 != 0 || month_name != "February") {
switch(month_name) {
case "January":
case "March":
case "May":
case "July":
case "August":
case "October":
case "December":
System.out.print("31");
break;
case "April":
case "June":
case "September":
case "November":
System.out.print("30");
break;
case "February":
System.out.print("28");
break;
default:
System.out.print("Please input ");
break;
}
}
else {
System.out.print("29");
}
}
public String main(String[] args) {
Scanner scnr = new Scanner(System.in);
String month = " ";
int year = 0;
month = scnr.nextLine();
year = scnr.nextInt();
return daysInaMonth(year, month);
}
}
问题是您的 daysInaMonth()
方法没有 return 任何东西。签名说它应该 return a String
.
但是,该方法当前设置为进行打印,而不是 return String
s。
第一个选项:保留它作为打印方法
因此,最简单的方法是将方法的签名更改为:
public void printDaysInAMonth (int year_number, String month_name) {
// ... your code ...
}
然后,在 main()
中,而不是做:
return System.out.print(daysInAMonth(year, month));
就这样:
printDaysInAMonth(year, month);
第二个选项:Return某事
在 daysInaMonth()
中,将每个对 System.out.print()
的引用更改为 return 语句,更改为 return String
。同时删除 break
,它将不再有用,因为您正在 return
ing。示例:
case "December":
return "31";
现在 main()
,您可以调用 daysInaMonth()
,它将 return String
值:
String stringThatWeGotBack = daysInaMonth(year, month);
System.out.println(stringThatWeGotBack);
或者只是:
System.out.println(daysInaMonth(year, month));
将 System.out.print
替换为 return
方法中的 return
语句。
此外,在 main 方法中将 return daysInaMonth(year, month);
更改为 System.out.print(daysInaMonth(year, month))
。
当我试图在我的主要方法中调用 daysInaMonth 方法时,我得到这个错误:
DaysInMonth.java:34: error: missing return statement
}
^
1 error
我做错了什么?为什么方法调用不起作用?我已确保这两种方法 return 都是正确的数据类型。这是我的 class 文件:
import java.util.Scanner;
public class DaysInMonth {
public String daysInaMonth (int year_number, String month_name) {
if(year_number % 4 != 0 || month_name != "February") {
switch(month_name) {
case "January":
case "March":
case "May":
case "July":
case "August":
case "October":
case "December":
System.out.print("31");
break;
case "April":
case "June":
case "September":
case "November":
System.out.print("30");
break;
case "February":
System.out.print("28");
break;
default:
System.out.print("Please input ");
break;
}
}
else {
System.out.print("29");
}
}
public String main(String[] args) {
Scanner scnr = new Scanner(System.in);
String month = " ";
int year = 0;
month = scnr.nextLine();
year = scnr.nextInt();
return daysInaMonth(year, month);
}
}
问题是您的 daysInaMonth()
方法没有 return 任何东西。签名说它应该 return a String
.
但是,该方法当前设置为进行打印,而不是 return String
s。
第一个选项:保留它作为打印方法
因此,最简单的方法是将方法的签名更改为:
public void printDaysInAMonth (int year_number, String month_name) {
// ... your code ...
}
然后,在 main()
中,而不是做:
return System.out.print(daysInAMonth(year, month));
就这样:
printDaysInAMonth(year, month);
第二个选项:Return某事
在 daysInaMonth()
中,将每个对 System.out.print()
的引用更改为 return 语句,更改为 return String
。同时删除 break
,它将不再有用,因为您正在 return
ing。示例:
case "December":
return "31";
现在 main()
,您可以调用 daysInaMonth()
,它将 return String
值:
String stringThatWeGotBack = daysInaMonth(year, month);
System.out.println(stringThatWeGotBack);
或者只是:
System.out.println(daysInaMonth(year, month));
将 System.out.print
替换为 return
方法中的 return
语句。
此外,在 main 方法中将 return daysInaMonth(year, month);
更改为 System.out.print(daysInaMonth(year, month))
。