2017-05-17 15 views
0

ユーザが入力できる特定のコマンドを持つシミュレータを実装しようとしています。 これらのコマンドの1つは「s」です。これを入力すると、アセンブリファイルの1つの命令をステップ実行する必要があります。しかし、「s num」という形式の別の命令があります。ここでは、ユーザーは何回命令を実行するかを定義できます。スキャナでユーザ入力を確認する

は、私はこの問題は、ユーザーが唯一のスキャナがちょうどステップを呼び出すのではなく、次の入力を待ちます「s」が入っている場合は、この

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

を確認してください。私の考えは、sが入力された後にintがあり、numステップ、他の賢明な呼び出しステップを続行する場合です。

ご協力いただきありがとうございます。

+0

入力が完了したことをスキャナはどのように知っていますか?私はあなたが帰りを押し入れるのを待っていると思いますか? –

答えて

0

入力を2つに分割して処理します。例えば、

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ブロック内で行くことにした場合は、現在のソリューションは、ホワイトスペースを持つString s後の数が常に存在することを前提としていそれらの間にデリミタを置くことができますが、必要に応じてさらに進んでさらに検証を行うことができます。

関連する問題