用扫描仪检查用户输入

时间:2017-05-17 22:08:55

标签: java input java.util.scanner

我正在尝试实现一个具有用户可以输入的某些命令的模拟器。 其中一个命令是“s”,输入时应该逐步执行汇编文件的一条指令。但是,还有另一条格式为“s num”的指令,用户可以在其中定义要通过的指令数量。

我检查了这个

    if(input.equals("s"))
    {
        //check for num next
        if(user.hasNextInt())
        {
            input = user.next();
            step(Integer.parseInt(input), assembler);
        }
        else
        {
            step(1, assembler);
        }
    }

但问题是如果用户只输入“s”,扫描仪将等待下一次输入,而不是只是调用步骤。我的想法是,如果输入s之后有一个int,那么继续执行num步骤,其他方面只需调用步骤。

非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

我会将输入分成两部分然后对待它。例如,

String input = user.nextLine();
String array[] = input.split(" ");
if(array.length<2){
    //check for `s`
}else{
    //check for `s num`
}

答案 1 :(得分:0)

你可以试试这个:

if(input.equals("s"))
{            
    step(1, assembler);
}
else if(input.startsWith("s") && input.length() > 2)
{
    step(Integer.parseInt(input.substring(input.indexOf(" ")+1)), assembler);
}

如果控制进入else if块内,当前解决方案假定字符串s之后总是有一个数字,它们之间有一个空格分隔符,但是你可以继续并在必要时进行更多验证。