2017-03-18 9 views
-3

を返しません:私は間違ってJavaの主な方法は、私は私のメインメソッドでdaysInaMonthメソッドを呼び出すしようとすると、私はこのエラーを取得するメソッド呼び出し

DaysInMonth.java:34: error: missing return statement 
    } 
^
1 error 

何をしているのですか?メソッド呼び出しが機能しないのはなぜですか?両方のメソッドが正しいデータ型を返すようにしました。ここにクラスファイルがあります:

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


    } 


} 
+1

- :public String daysInaMonth(int year_number、String month_name)ここでは、文字列値に飢えています。 –

+0

答えはここにあります:これは超基本的なものです。あなたの学習教材に目を向けると勉強になります!また、エラーメッセージのためにGoogleに非常に役立ちます。 – GhostCat

+0

私はこの質問を議論の対象外とすることに投票しました。これは、これまでの研究を少しだけ行うだけで簡単に解決できる基本的で単純なエラーだからです。 – GhostCat

答えて

3

daysInaMonth()メソッドは何も返しません。署名にはStringが返されます。

ただし、この方法は現在印刷を行うように設定されており、Stringを返さないように設定されています。

まずオプション:代わりに行うので、main()で、その後

public void printDaysInAMonth (int year_number, String month_name) { 
    // ... your code ... 
} 

ので、印刷方法として、それを維持する、最も簡単なのにあなたのメソッドのシグネチャを変更することです

return System.out.print(daysInAMonth(year, month)); 

ちょうど行います

printDaysInAMonth(year, month); 

番目のオプション:Stringを返すために、return文にSystem.out.print()にすべての参照を変更、何か

daysInaMonth()

を返します。また、を削除してください。これはあなたがreturnですのでもう役に立たなくなります。例:main()で今

 case "December": 
      return "31"; 

、あなたがdaysInaMonth()を呼び出すことができ、それがString値を返します:

String stringThatWeGotBack = daysInaMonth(year, month); 
System.out.println(stringThatWeGotBack); 

それとも:

System.out.println(daysInaMonth(year, month)); 
1

daysInaMonthSystem.out.printreturnに声明を交換します方法。

また、メインメソッドでreturn daysInaMonth(year, month);からSystem.out.print(daysInaMonth(year, month))に変更してください。

関連する問題