2015-11-13 85 views
1

我有一個程序,玩超級英雄的頂級王牌遊戲,我需要重複每次用戶玩遊戲時的菜單。我試圖創建一個方法(displayMenus),它將被插入到每個switch語句中(關閉程序除外),但是我不明白如何讓它返回這個菜單。如何獲得system.out.println返回方法

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



} 
} 

任何幫助是極大的讚賞,我似乎無法讓我的身邊方法的頭!

回答

2

首先,聲明displayMenus是無效的。你需要給它一個返回類型(即使是void),例如:

public static void displayMenus() { 

如果你讓它空白,你就需要調用displayMenus(),而無需調用System.out.println

displayMenus(); 

如果您使字符串,則需要在displayMenus建立一個字符串,返回它,如:

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

,那麼你可以調用System.out.println(displayMenus())

1

只要改變displayMenus返回菜單爲String,而不是打印出來:

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

我簡化了代碼下來,因爲有相當的代碼本身的幾個語法錯誤,但是這應該回答你的問題。您的displayMenus()函數不需要返回String,您可以在do...while循環的開頭調用此函數。邏輯流程應該是:

  • 初始化掃描儀
  • 可供選擇
  • 創建輸入變量do...while循環
  • 呼叫displayMenus()
  • 讀取用戶選擇從掃描儀
  • 做切換邏輯
  • 返回至第三項如果循環未破壞

我做了一個小班來演示這個:

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

    } 
}