【问题标题】:Scanner for multiple characters with getCommand使用 getCommand 扫描多个字符
【发布时间】:2015-02-26 19:38:06
【问题描述】:

所以我尝试以这种方式使用扫描仪来获取用户输入,但我不确定如何进行多字符输入。例如下面的代码,如果用户输入a 并输入它,它将进入等于a 的if 语句。现在我想阅读超过 1 个字符,例如使用下面的代码,用户可以输入 p1p2p3...p20 等,而不仅仅是 p编码如下。我通常可以使用scan.hasNext(),但是对于下面带有getCommandcommand 变量,是否有等效的变量?

Scanner scan = new Scanner(System.in);
String command = getCommand(scan);

if(command.equals("a")){
}else if(command.equals("p")){
}

private String getCommand(Scanner scan){
    System.out.print("Please enter a one or two character command: ");
    String command = null;

    if(scan.hasNext()){
        command = scan.nextLine();
    }else{
        System.out.println("Exit");
    }
    return command;
}

【问题讨论】:

  • getCommand()的方法是什么?
  • 为什么不直接告诉我们您需要准确输入什么样的文本?
  • @user3437460 如果是打字输入,它可以是任何东西。
  • 这个问题我又看了5遍,还是不明白OP想要什么。
  • 我希望能够输入超过 1 个字符我已经用命令方法更新了 OP。

标签: java java.util.scanner


【解决方案1】:

从您的 cmets 中,您可能想要这样的东西。

您的“命令”听起来像是您想要接收命令的 DOS 命令提示符。

您可以连续提示输入具有给定条件的输入。例如:

Scanner scn = new Scanner(System.in);
String cmd= "";
do{
    System.out.print("Command: ");
    cmd= scn.nextLine();
    executeCommand(cmd);
}while(!cmd.equalsIgnoreCase("exit"));


//Create a method to execute command
public static void executeCommand(String cmd)
{
    switch(cmd){
        case "p1": //do whatever you need to do for p1
                  break;
        case "p2": //do whatever you need to do for p2
                  break;
        case "p3": //do whatever you need to do for p3 and so on..
                  break;
        default: System.out.println("Invalid command");
                  break;
    }
}

但是,请注意,实际的命令提示符不会以这种方式处理命令。命令提示符只是根据输入的可执行文件名执行单个可执行程序。

但是,如果您有数千个命令,则此方法可能会有点低效。这完全取决于您想要实现的目标。


有多种方法可以处理命令。您也可以直接从 main 方法中的命令行参数接收命令(字符串)。 public static void main(String[] args)

【讨论】:

    猜你喜欢
    • 2017-11-23
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 2014-05-20
    • 1970-01-01
    • 2015-02-14
    • 2013-06-05
    • 1970-01-01
    相关资源
    最近更新 更多