簡體   English   中英

使用掃描儀檢查用戶輸入

[英]Checking user input with 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步驟,否則執行剛才的調用步驟。

任何幫助是極大的贊賞!

我將輸入分為兩部分,然后對其進行處理。 例如,

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

您可以嘗試以下方法:

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 ,在它們之間的空格分隔符,但你可以走得更遠,如果需要做更多的驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM