我有一个程序,可以玩超级英雄王牌游戏,每次用户玩游戏时我都需要重复菜单。我试图创建一个方法(displayMenus),它将插入到每个switch语句中(除了关闭程序),但我不知道如何让它返回这个菜单。
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:");
}
}
非常感谢任何帮助,我只是似乎无法理解方法!
首先,displayMenus
的声明无效。您需要给它一个返回类型(即使是void
),例如:
public static void displayMenus () {
如果使其无效,则需要调用displayMenus()
而不调用System.out.println
:
displayMenus();
如果您将其设为String,则需要在displayMenus
中构建一个String并返回它,例如:
public static String displayMenus() {
return "First - 1" + ...;
}
则可以调用CCD_ 6。
只需更改displayMenus
即可将菜单返回为String
,而不是打印:
public static String displayMenus() {
return "First - 1nNext - 2nPrev - 3nLast - 4nQuit - 5nnEnter Choice:n";
}
我简化了代码,因为代码本身有很多语法错误,但这应该可以回答您的问题。displayMenus()
函数不需要返回String
,而是可以在do...while
循环的开头调用它。逻辑流程应为:
- 初始化扫描仪
- 创建可供选择的变量
- 进入
do...while
循环 - 致电
displayMenus()
- 从扫描仪读取用户选择
- Do开关逻辑
- 如果循环未中断,则返回第三项
我做了一个小课堂来演示:
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:");
}
}