2017-05-17 141 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用空格後的數它們之間的分隔符,但是如果有必要,你可以繼續下去並做更多的驗證。