需求分析
- 生成 10 個隨機長整數填入陣列
- 計算所有元素總和
- 使用 JOptionPane 視窗顯示陣列內容與總和
完整實作程式碼
import java.util.Random;
import javax.swing.JOptionPane;
public class SumRandomArray {
public static void main(String[] args) {
// 1. 初始化
long[] numbers = new long[10];
StringBuilder output = new StringBuilder();
long sum = 0;
// 使用當前時間毫秒數作為種子
Random random = new Random(System.currentTimeMillis());
// 2. 生成隨機數、累加、建立輸出字串
for (int i = 0; i < numbers.length; i++) {
numbers[i] = random.nextLong();
sum += numbers[i];
output.append(String.format("numbers[%d] = %d%n", i, numbers[i]));
}
// 3. 顯示結果視窗
String message = output.toString() + "\n總和 = " + sum;
JOptionPane.showMessageDialog(
null, // 父視窗 null = 置中
message, // 訊息內容
"隨機陣列生成與求和結果", // 標題
JOptionPane.INFORMATION_MESSAGE // 圖示類型
);
}
}
關鍵 API 解析
| 類別/方法 | 用途 | 關鍵參數 |
| Random.nextLong() | 生成 [-2^63, 2^63-1] 隨機長整數 | 種子決定序列可重現性 |
| StringBuilder | 高效字串拼接 (非線程安全) | 避免 String + 產生大量暫時物件 |
| String.format() | 格式化輸出 | %d 整數、%n 平台換行 |
| JOptionPane.showMessageDialog() | 模態資訊對話框 | parent, message, title, messageType |
執行結果示意

┌─────────────────────────────────────┐
│ 隨機陣列生成與求和結果 │
├─────────────────────────────────────┤
│ numbers[0] = -458291034582 │
│ numbers[1] = 789234567890 │
│ numbers[2] = -123456789012 │
│ ... │
│ numbers[9] = 333444555666 │
│ │
│ 總和 = 1234567890123 │
│ │
│ [ 確定 ] │
└─────────────────────────────────────┘
進階擴充:可配置參數版本
public class ConfigurableRandomArray {
public static void main(String[] args) {
// 可從命令列參數或配置檔讀取
int arraySize = parseArg(args, 0, 10);
long seed = parseArg(args, 1, System.currentTimeMillis());
boolean showDialog = parseBooleanArg(args, 2, true);
Random random = new Random(seed);
long[] numbers = new long[arraySize];
StringBuilder sb = new StringBuilder();
long sum = 0;
for (int i = 0; i < arraySize; i++) {
numbers[i] = random.nextLong();
sum += numbers[i];
sb.append(String.format("numbers[%d] = %d%n", i, numbers[i]));
}
String result = sb.append("\n總和 = ").append(sum).toString();
if (showDialog) {
JOptionPane.showMessageDialog(null, result, "結果", JOptionPane.INFORMATION_MESSAGE);
} else {
System.out.println(result); // 控制台模式
}
}
private static int parseArg(String[] args, int index, int defaultValue) {
try { return args.length > index ? Integer.parseInt(args[index]) : defaultValue; }
catch (NumberFormatException e) { return defaultValue; }
}
private static boolean parseBooleanArg(String[] args, int index, boolean defaultValue) {
try { return args.length > index ? Boolean.parseBoolean(args[index]) : defaultValue; }
catch (Exception e) { return defaultValue; }
}
}
教學重點總結
- Random 種子機制:相同種子產生相同序列,利於測試重現
- 長整數溢位:求和可能超出 long 範圍,生產環境建議用 BigInteger
- StringBuilder 效能:迴圈拼接字串必用,避免 O(n²) 字串複製
- Swing 線程安全:JOptionPane 在 EDT 執行,main 線程直接呼叫安全
- 格式化輸出:printf/format 統一格式,提升可讀性