为什么我的方法 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 Strings。

第一个选项:保留它作为打印方法

因此,最简单的方法是将方法的签名更改为:

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,它将不再有用,因为您正在 returning。示例:

        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))