命令列參數(Command-line arguments):
從 main(String[] args) 取得外部輸入,例如:
java Day13Demo localhost 80-100
就能自動掃描 host=localhost,port=80~100。
交互模式(Interactive mode):
如果沒有輸入參數,就啟動互動模式(使用 Scanner 問問題)。
條件分支結合前面邏輯:
用 if (args.length > 0) 判斷模式。
// 命令列模式
if (args.length >= 2) {
host = args[0];
int[] range = parsePortRange(args[1]);
startPort = range[0];
endPort = range[1];
}
//args 是 main(String[] args) 裡的陣列,裡面存放你在命令列輸入的參數。
args.length >= 2 的意思是:如果至少給了兩個參數(第一個當 host,第二個當 port 範圍),就進入這個區塊。
// 互動模式
else {
Scanner scanner = new Scanner(System.in);
System.out.print("請輸入 host: ");
host = scanner.nextLine().trim();
System.out.print("請輸入 port 或範圍: ");
int[] range = parsePortRange(scanner.nextLine().trim());
startPort = range[0];
endPort = range[1];
}
互動模式 → 方便學習、使用者操作簡單。
命令列模式 → 方便自動化、批次執行、整合到工具裡。
例如:
以後要寫「網路安全掃描器」或「滲透測試工具」,就一定要支援命令列參數。
專業工具像 nmap、ping、curl 都是這樣做的!
命令列模式:一開始就給好指令,直接執行,不再問問題,適合工程師、自動化。
互動模式:執行後才輸入資料一步步引導輸入,適合一般使用者、學習者。
今天學會了「讓程式支援命令列參數」之後,感覺整個專案變得更專業。
以前都是一行一行用 Scanner 輸入,現在可以像真正的工具一樣用指令執行。
我也理解到:
命令列參數比較適合自動化、寫批次腳本或工具。
互動模式比較方便手動使用。
雖然今天的程式看起來跟之前的差不多,但背後的邏輯進步很多。