连续扫描仪输入
Continuous Scanner input
我正在编写一个主要的实践项目,我可以在其中不断添加 类 来做完全不同的有趣事情。例如,我有一个 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");
}
}
除了允许用户重复输入命令外,我认为你还应该允许一些退出程序的方法(除了必须通过操作系统杀死它:-)在下面的代码中,我任意使用了单词 quit 作为退出循环的方式。请随意使用不同的字符串。
Scanner myObj = new Scanner(System.in);
String command = "";
while (!"quit".equalsIgnoreCase(command)) {
System.out.println("Enter command");
if (!"quit".equalsIgnoreCase(command)) {
ParseAndDirect(command);
}
}
顺便说一句,根据java naming conventions,方法名称应该是parseAndDirect
,即它应该以小写字母开头。
您需要将输入部分放在一个循环中,例如
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 naming conventions例如方法,ParseAndDirect
应该命名为 parseAndDirect
并且 InputScanner
应该命名为 inputScanner
.
我正在编写一个主要的实践项目,我可以在其中不断添加 类 来做完全不同的有趣事情。例如,我有一个 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");
}
}
除了允许用户重复输入命令外,我认为你还应该允许一些退出程序的方法(除了必须通过操作系统杀死它:-)在下面的代码中,我任意使用了单词 quit 作为退出循环的方式。请随意使用不同的字符串。
Scanner myObj = new Scanner(System.in);
String command = "";
while (!"quit".equalsIgnoreCase(command)) {
System.out.println("Enter command");
if (!"quit".equalsIgnoreCase(command)) {
ParseAndDirect(command);
}
}
顺便说一句,根据java naming conventions,方法名称应该是parseAndDirect
,即它应该以小写字母开头。
您需要将输入部分放在一个循环中,例如
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 naming conventions例如方法,ParseAndDirect
应该命名为 parseAndDirect
并且 InputScanner
应该命名为 inputScanner
.