2016-04-12 22 views
1

我的整個程序與命令提示符相似。目前,我正在編寫一個函數,將用戶輸入的單詞附加到特定文件。用戶必須遵循適當的語法。通過鍵入:靈活的開關盒語法

APP C Now 

程序將單詞「現在」附加到文件C.

通過鍵入:

APP C She 

程序將單詞「她」追加到文件C.

我有很多選擇,我都把它們放到switch語句中。例如:

case "ADD C": 
case "DEL C": 

我的其他案例,包括上述兩個工作都很好。我的問題是,我將如何製作這種格式的開關盒?即「的APP C-

回答

2

你可以使用輸入字符串.split(" ")將其分割成字符串,其中陣列中的每個元素是在原始字符串中的單詞的數組。換句話說

"ADD C She".split(" ") = {"ADD", "C", "She"} 

一旦有一個數組可以很容易地檢查元件1用於與switch語句,元件2爲文件名,和元件3對自變量的命令名稱。

+0

謝謝,但情況選擇是什麼? – DanielleS

+0

像這樣: String [] inputSplit = input.split(「」); if(inputSplit.equals(「ADD」){etc – nhouser9

1

在實際情況下,通常最好使用查找表和多態而不是條件(ifswitch)。在這種情況下,這種情況特別有用,其中您的不同命令可能會採用不同數量的參數,您甚至可能希望空格變得重要。

您可以定義一個接口爲您的命令:

interface Command { 
    void execute(String args); 
} 

然後在你的主類,你就會有一個Map<String, Command> commands。拆分輸入分成兩個部分,第二部分傳遞給你的命令:

String commandName = scanner.next(); 
String args = scanner.nextLine(); 
commands.get(commandName).execute(args); 

這有讓您的循環比,如果你試圖處理所有的情況下,內聯大大簡化的優勢。通過添加新的命令(或別名到現有的命令)也更容易擴展,並且更容易測試,因爲命令是獨立的並且可以獨立驗證。如果您有重複的行爲,例如打開args中指定的文件,您甚至可以使用抽象類來共享該行爲。