2015-11-13 1 views
1

J'ai un programme qui joue un jeu de super-héros super-héros et j'ai besoin de répéter le menu chaque fois qu'un utilisateur joue le jeu. J'ai essayé de créer une méthode (displayMenus) qui serait insérée dans chaque instruction switch (sauf pour fermer le programme), mais je ne comprends pas comment l'obtenir pour retourner ce menu.Comment obtenir un system.out.println à retourner dans une méthode

public class Heros { 

public static void main(String[] args) { 



Scanner input = new Scanner(System.in); 

int index = 0; 


    do { 

    int inp = input.nextInt(); 

    switch (inp) { 
     //FIRST 
     case 1: 
      index = 0; 
      System.out.println(HerosAsList.getHeros().get(index)); 
      System.out.println(displayMenus); 
      break; 
     //NEXT 
     case 2: 
      index++; 
      if (index > HerosAsList.getHeros().size() - 1) { 
       index = HerosAsList.getHeros().size() - 1; 
      } 
      System.out.println(HerosAsList.getHeros().get(index)); 
      System.out.println(displayMenus); 
      break; 
     //PREV 
     case 3: 
      index--; 
      if (index < 0) { 
       index = 0; 
      } 
      System.out.println(HerosAsList.getHeros().get(index)); 
      System.out.println(displayMenus); 
      break; 
     //LAST 
     case 4: 
      index = HerosAsList.getHeros().size() - 1; 
      System.out.println(HerosAsList.getHeros().get(index)); 
      System.out.println(displayMenus); 
      break; 
     //QUIT 
     case 0: 
      System.out.println("Closing system"); 
      System.exit(inp); 

      break; 
    } 
} 

while(index<HerosAsList.getHeros().size()); 

} 
public static displayMenus() { 


    System.out.println("First - 1"); 
    System.out.println("Next - 2"); 
    System.out.println("Prev - 3"); 
    System.out.println("Last - 4"); 
    System.out.println("Quit - 5"); 
    System.out.println(""); 
    System.out.println("Enter Choice:"); 



} 
} 

toute aide est grandement appréciée, je n'arrive pas à comprendre les méthodes!

Répondre

2

Premièrement, la déclaration de displayMenus n'est pas valide. Vous devez donner un type de retour (même si cela est void), par exemple:

public static void displayMenus() { 

Si vous le faites vide, vous devez invoquer displayMenus() sans appeler System.out.println:

displayMenus(); 

Si vous rendre la chaîne, vous devez construire une chaîne dans displayMenus et le retourner, par exemple:

public static String displayMenus() { 
    return "First - 1" + ...; 
} 

vous pouvez alors invoquer System.out.println(displayMenus()).

1

Il suffit de changer displayMenus pour retourner au menu comme String, plutôt que de l'imprimer:

public static String displayMenus() { 
    return "First - 1\nNext - 2\nPrev - 3\nLast - 4\nQuit - 5\n\nEnter Choice:\n"; 
} 
1

I simplifié le code vers le bas, parce qu'il y avait assez peu d'erreurs de syntaxe dans le code lui-même, mais cela devrait répondre ta question. Votre fonction displayMenus() n'a pas besoin de retourner un String, vous pouvez l'appeler au début de votre boucle do...while. Le flux logique doit être:

  • Initialiser scanner
  • Créer une variable pour le choix
  • Entrez boucle do...while
  • Appel displayMenus()
  • Lire le choix des utilisateurs de scanner
  • Do logique de commutation
  • Retour au 3ème article si la boucle n'est pas rompue

J'ai fait une petite classe de démo ceci:

package zzzTestProj; 

import java.util.Scanner; 

public class NewClass { 

    public static void main(String[] args) { 

     Scanner userInputScanner = new Scanner(System.in); 

     int userMenuChoice; 

     do { 
      displayMenus(); 
      userMenuChoice = userInputScanner.nextInt(); 

      switch (userMenuChoice) { 
      // FIRST 
      case 1: 
       break; 
      // NEXT 
      case 2: 
       break; 
      case 0: 
       System.out.println("Closing system"); 
       System.exit(userMenuChoice); 

       break; 
      } 
     } while (userMenuChoice != 5); 

    } 

    public static void displayMenus() { 

     System.out.println("First - 1"); 
     System.out.println("Next - 2"); 
     System.out.println("Prev - 3"); 
     System.out.println("Last - 4"); 
     System.out.println("Quit - 5"); 
     System.out.println(""); 
     System.out.print("Enter Choice:"); 

    } 
}