Java - 命令列參數

Hello, 未來的 Java 程式設計師們!今天,我們將踏上一段令人興奮的旅程,進入 Java 的命令列參數世界。作為你們親切的鄰居計算機科學老師,我會一步步指導你們了解這個主題。所以,拿起你們最喜歡的飲料,放鬆身心,讓我們一起深入探討!

Java - Command-Line Arguments

命令列參數是什麼?

想像你是一位廚師(請耐心,我們馬上就會進行編程部分!)。你有一個食譜,但有時候你想要稍微改變一下材料。每次都要重寫整個食譜嗎?如果你能在開始烹飪時告訴食譜要做哪些改變,那不是很好嗎?命令列參數對我們的 Java 程式的作用基本上也是如此!

命令列參數是我們在從命令列運行程式時傳遞給 Java 程式的值。它們讓我們能在不修改源代碼的情況下為我們的程式提供輸入。

傳遞和訪問命令列參數

在 Java 中,命令列參數作為字符串數組傳遞給 main 方法。讓我們看一個簡單的例子:

public class Greeter {
public static void main(String[] args) {
if (args.length > 0) {
System.out.println("Hello, " + args[0] + "!");
} else {
System.out.println("Hello, World!");
}
}
}

在這個例子中,args 是一個包含命令列參數的數組。如果我們在運行程序時提供了一個參數,它將問候那個名字。否則,它會默認為 "Hello, World!"。

要使用命令列參數運行這個程序,我們會這樣做:

java Greeter Alice

這將輸出:Hello, Alice!

命令列參數的好處

  1. 靈活性:它們讓我們能在不修改代碼的情況下改變程序行為。
  2. 自動化:對於腳本和批量處理非常有用。
  3. 測試:方便測試不同的輸入。
  4. 配置:可以用於設置程序選項。

單個命令列參數的例子

讓我們創建一個更具實際意義的例子。假設我們想要計算圓的面积,並將半徑作為命令列參數提供。

public class CircleArea {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Please provide exactly one argument: the radius of the circle.");
return;
}

try {
double radius = Double.parseDouble(args[0]);
double area = Math.PI * radius * radius;
System.out.printf("The area of a circle with radius %.2f is %.2f\n", radius, area);
} catch (NumberFormatException e) {
System.out.println("The argument must be a valid number.");
}
}
}

要運行這個程序,我們會這樣做:

java CircleArea 5

這將輸出:The area of a circle with radius 5.00 is 78.54

讓我們分解一下這裡發生了什麼:

  1. 我們檢查是否提供了恰好一個參數。
  2. 我們使用 Double.parseDouble() 將字符串參數轉換為雙精度浮點數。
  3. 我們使用公式 πr² 計算面积。
  4. 我們使用 printf 來格式化輸出。
  5. 我們捕獲 NumberFormatException,以防輸入不是有效的數字。

多個命令列參數的例子

現在,讓我們升級一個檔次,使用多個命令列參數。我們將創建一個簡單的计算器,可以進行加法、減法、乘法或除法操作。

public class Calculator {
public static void main(String[] args) {
if (args.length != 3) {
System.out.println("Usage: java Calculator <number1> <operation> <number2>");
System.out.println("Operations: add, subtract, multiply, divide");
return;
}

try {
double num1 = Double.parseDouble(args[0]);
double num2 = Double.parseDouble(args[2]);
String operation = args[1].toLowerCase();

double result;
switch (operation) {
case "add":
result = num1 + num2;
break;
case "subtract":
result = num1 - num2;
break;
case "multiply":
result = num1 * num2;
break;
case "divide":
if (num2 == 0) {
System.out.println("Error: Division by zero!");
return;
}
result = num1 / num2;
break;
default:
System.out.println("Unknown operation: " + operation);
return;
}

System.out.printf("%.2f %s %.2f = %.2f\n", num1, operation, num2, result);
} catch (NumberFormatException e) {
System.out.println("Error: Invalid number format.");
}
}
}

要使用這個计算器,我們會這樣做:

java Calculator 10 add 5

這將輸出:10.00 add 5.00 = 15.00

讓我們分解一下這個更複雜的例子:

  1. 我們檢查是否提供了恰好三個參數:兩個數字和一個操作。
  2. 我們解析第一和第三個參數為雙精度浮點數。
  3. 我們根據第二個參數使用 switch 語句來執行相應的操作。
  4. 我們處理潛在錯誤,如除以零或無效操作。
  5. 最後,我們以格式化的字符串輸出結果。

結論

命令列參數是 Java 程式設計師工具箱中的強大工具。它們讓我們能夠創建靈活、可重用的程序,能夠在不修改源代碼的情況下處理不同的輸入。在你們繼續 Java 的學習旅程中,你會發現命令列參數在更複雜的應用程序和腳本中有更多用途。

記住,精通編程的關鍵在於練習。嘗試修改這些例子或創建自己的使用命令列參數的程序。也許你可以創建一個基於命令列輸入生成定制問候卡片的程序,或者一個在不同度量單位之間轉換的工具。可能性無限!

快樂編程,願你的命令列參數永遠有效!

Credits: Image by storyset