2017-03-18 2 views
-3

Lorsque je tente d'appeler la méthode daysInaMonth dans ma principale méthode, je reçois cette erreur:méthode Java principale ne sera pas de retour d'appel de méthode

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

Qu'est-ce que je fais mal? Pourquoi l'appel de la méthode ne fonctionne-t-il pas? J'ai vérifié que les deux méthodes retournent le type de données correct. Voici mon fichier de classe:

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 Chaîne daysInaMonth (int year_number, String mois_name) this here a faim de valeur de chaîne. –

+0

La réponse ici: ce sont des choses super basiques. Tournez-vous vers votre matériel d'apprentissage et étudiez! Il aide également beaucoup à Google pour votre message d'erreur. – GhostCat

+0

Je vote pour clore cette question hors-sujet car il s'agit d'une erreur basique et simple qui pourrait être facilement résolue en faisant juste un peu de recherche préalable. – GhostCat

Répondre

3

Le problème est que votre méthode daysInaMonth() ne retourne rien. La signature indique qu'il devrait retourner un String.

Cependant, la méthode est actuellement configurée pour effectuer l'impression, pour ne pas retourner String s.

Première option: garder comme une méthode d'impression

Ainsi, le plus simple serait de changer la signature de votre méthode pour:

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

Puis, en main(), au lieu de faire:

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

Il suffit de faire:

printDaysInAMonth(year, month); 

Deuxième option: Retour Quelque chose

En daysInaMonth(), changer toute référence à System.out.print() une déclaration de retour, pour retourner le String. Retirez également break, qui ne sera plus utile puisque vous êtes return ing. Exemple:

 case "December": 
      return "31"; 

Maintenant en main(), vous pouvez appeler le daysInaMonth() et il retournera la valeur String:

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

Ou tout simplement:

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

Remplacer System.out.print à la déclaration return à l'intérieur daysInaMonth méthode.

De même, remplacez return daysInaMonth(year, month); par System.out.print(daysInaMonth(year, month)) dans la méthode principale.