You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java生成3列各10个随机值问题:当前仅输出1列求修正

Java随机数生成列数问题修正

我需要排查代码错误,目标是用Java生成3列、每列10个范围在2.0到5.0之间的随机值,但现在只能输出1列。以下是我的代码、当前输出及期望输出,请求帮助修正:

原代码

private static void displayDifficultyScore(ArrayList<TestDive> alist, double[] dArray)
{
    // Create a Random class
    Random rand = new Random();
    double[] diffScores = new double[10];
    double[] diffArray = new double[3];
    
    // Print next line
    System.out.println();       
    
    // Loop for Difficulty Scores
    for (int j = 0; j < diffScores.length; j++) {
        diffScores[j] = 2.0 + rand.nextDouble() * 3.0;
        System.out.printf("%-7.1f%n", diffScores[j]);
    }
}

public static void main(String[] args)
{
    double[] diffScores = new double[1];
    ArrayList<TestDive> alist = new ArrayList<TestDive>();
    for (int j = 0; j < diffScores.length; j++) {
        displayDifficultyScore(alist, diffScores);
    }
}

当前输出

2.9
4.4
4.9
3.7
4.3 
3.1 
4.2 
4.5 
4.2 
2.9 

期望输出

2.9    3.0    2.2
4.4    3.4    4.7
4.9    2.5    3.0
3.7    4.7    3.3
4.3    4.4    3.8
3.1    3.0    4.9
4.2    2.1    2.9
4.5    5.0    2.2
4.2    4.8    3.6
2.9    2.6    3.1

问题分析与修正代码

问题点

  1. main方法中diffScores数组长度为1,导致仅调用一次displayDifficultyScore,无法生成多列。
  2. displayDifficultyScore方法中,每次输出随机数后用%n强制换行,导致每个数值单独占一行,不符合多列排版需求。
  3. 方法内定义的diffArray数组未被使用,属于冗余代码。

修正后的代码

import java.util.ArrayList;
import java.util.Random;

// 假设TestDive是已定义的类
class TestDive {}

public class DifficultyScoreGenerator {
    private static void displayDifficultyScore(ArrayList<TestDive> alist) {
        Random rand = new Random();
        
        // 循环10次,对应10行
        for (int row = 0; row < 10; row++) {
            // 每行生成3个随机数并输出
            for (int col = 0; col < 3; col++) {
                double score = 2.0 + rand.nextDouble() * 3.0;
                System.out.printf("%-7.1f", score);
            }
            // 每行结束后换行
            System.out.println();
        }
    }

    public static void main(String[] args) {
        ArrayList<TestDive> alist = new ArrayList<>();
        // 直接调用一次方法即可生成3列10行的结果
        displayDifficultyScore(alist);
    }
}

说明

  • 调整循环逻辑:外层循环控制行数(10行),内层循环控制列数(3列),每行生成3个随机数后统一换行。
  • 移除冗余参数dArray和未使用的数组变量,简化代码结构。
  • main方法中直接调用一次displayDifficultyScore即可得到期望的3列输出。

内容的提问来源于stack exchange,提问作者Whyte_Napkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:51:57