2017-05-17 116 views
0

我试图实现一个模拟器,用户可以输入某些命令。 其中一个命令是“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步骤,否则就调用step。

任何帮助,非常感谢!

+0

扫描仪如何知道您已完成打字?我认为它等着你按回来或进入? –

回答

0

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

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

你美丽的人,它的作品!非常感谢! –

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用空格后的数它们之间的分隔符,但是如果有必要,你可以继续下去并做更多的验证。