首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java 隨機陣列生成與求和:Swing 視窗互動完整範例

     編輯:Java 相關知識

需求分析

  • 生成 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; }
    }
}

教學重點總結

  1. Random 種子機制:相同種子產生相同序列,利於測試重現
  2. 長整數溢位:求和可能超出 long 範圍,生產環境建議用 BigInteger
  3. StringBuilder 效能:迴圈拼接字串必用,避免 O(n²) 字串複製
  4. Swing 線程安全:JOptionPane 在 EDT 執行,main 線程直接呼叫安全
  5. 格式化輸出:printf/format 統一格式,提升可讀性
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved