我正在写排序的主实践项目,我可以只是不断地添加类,做完全不同的有趣的事情。例如,我有一个CoinFlipperCmd和一个扑克牌PotOddsCmd,目前代码运行良好,但我希望能够重复输入命令,而不必重新运行程序。示例控制台目前。
FLIP 10 // coinflips 10 times and notes the outcome
You flipped 5 heads and 5 tails
在这之后,代码会退出, 但我希望能够继续输入命令。像这样。
FLIP 5
You flipped 4 heads and 1 tails
FLIP 6
You flipped 3 heads and 3 tails
POTODDS 0.5 1
You have pot odds of 2:1
我用扫描仪来输入
import java.util.Scanner; // Import the Scanner class
public class Main {
public static void main(String[] args) {
InputScanner();
}
private static void InputScanner() {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
System.out.println("Enter command");
String command = myObj.nextLine(); // Read user input
ParseAndDirect(command);
}
private static void ParseAndDirect(String command) {
String[] commandSplit = command.split(" ", 2);
String usercommand = commandSplit[0];
if (usercommand.equals("FLIP")){
CoinFlipperCmd.CoinFlipperCmd(commandSplit[1]);
} else if (usercommand.equals("POTODDS")){
PotOddsCmd.PotOddsCmd(commandSplit[1]);
} else System.out.println("Invalid Command");
}
}
你需要把输入的部分放在一个循环里面,如
private static void InputScanner() {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
String command;
do {
System.out.print("Enter command (q to quit): ");
command = myObj.nextLine(); // Read user input
if (!command.equalsIgnoreCase("q")) {
ParseAndDirect(command);
}
} while (!command.equalsIgnoreCase("q"));
}
另一种使用循环的方式可以如下。
private static void InputScanner() {
Scanner myObj = new Scanner(System.in); // Create a Scanner object
String command;
while(true)
System.out.print("Enter command (q to quit): ");
command = myObj.nextLine(); // Read user input
if (command.equalsIgnoreCase("q")) {
break;
}
ParseAndDirect(command);
}
}
顺便说一下 (因为它不会对程序的执行产生任何影响),你应该始终遵循的是 Java命名惯例 例如,该方法。ParseAndDirect
应命名为 parseAndDirect
和 InputScanner
应命名为 inputScanner
.
除了允许用户重复输入命令外,我认为你还应该允许一些退出程序的方法(除了通过操作系统杀死程序外 :-) 在下面的代码中,我任意使用了以下词语 退出 作为退出循环的方式。可以随意使用其他字符串。
Scanner myObj = new Scanner(System.in);
String command = "";
while (!"quit".equalsIgnoreCase(command)) {
System.out.println("Enter command");
if (!"quit".equalsIgnoreCase(command)) {
ParseAndDirect(command);
}
}
对了,根据 JAVA命名惯例 方法名称应该是 parseAndDirect
即应以小写字母开头。