我正在尝试实现一个具有用户可以输入的某些命令的模拟器。 其中一个命令是“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步骤,其他方面只需调用步骤。
非常感谢任何帮助!
答案 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
之后总是有一个数字,它们之间有一个空格分隔符,但是你可以继续并在必要时进行更多验证。