[英]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。
在實際應用中,通常最好使用查找表和多態而不是條件( if
或switch
)。 在這種情況下,它特別有用,你的不同命令可能會占用不同數量的參數,你甚至可能希望空白是重要的。
您可以為命令定義接口:
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.