簡體   English   中英

靈活的開關案例語法

[英]Flexible switch case syntax

我的整個程序類似於命令提示符。 目前,我正在編寫一個函數,將用戶輸入的單詞追加到特定文件中。 用戶必須遵循適當的語法。 輸入:

APP C Now

程序會在文件C中附加單詞“Now”。

輸入:

APP C She

程序會在文件C中附加單詞“She”。

我有很多選擇,我已經把它放到了switch語句中。 例:

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

包括上述兩個在內的其他案例工作得很好。 我的問題是,我如何為這種格式制作一個開關盒? 即“APP C

您可以在輸入字符串上使用.split(" ")將其拆分為字符串數組,其中數組中的每個元素都是原始字符串中的單詞。 換一種說法

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

一旦有了數組,就可以使用switch語句輕松檢查元素1的命令名,使用文件名的元素2和參數的元素3。

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

您可以為命令定義接口:

interface Command {
    void execute(String args);
}

然后在您的主類中,您將擁有Map<String, Command> commands 將輸入拆分為兩部分並將第二部分傳遞給Command:

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

這樣做的好處是使你的循環比你試圖內聯處理所有情況時簡單得多。 通過添加新命令(或現有命令的別名)以及更容易測試,它也更容易擴展,因為命令是自包含的並且可以獨立驗證。 如果您有重復的行為,例如打開args指定的文件,您甚至可以使用抽象類來共享該行為。

暫無
暫無

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

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