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

如何用Java根据用户输入的数组打印正确的星号柱状图?

问题分析

你现有代码的逻辑是逐个遍历数组元素,把每个元素对应的星号纵向换行打印,最终打出来的是分散的竖排星号,不符合横向对齐的柱状图要求。
正确的柱状图需要从最高高度开始,从上到下逐行打印:每一行依次检查每个数组元素的高度是否大于当前行的层级,满足就输出星号,否则输出空格占位,保证所有列对齐。

修正后的代码

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] arr = new int[n];
        int maxHeight = 0;
        // 读取数组的同时统计最大高度,确定总行数
        for (int i = 0; i < n; i++) {
            arr[i] = sc.nextInt();
            if (arr[i] > maxHeight) {
                maxHeight = arr[i];
            }
        }
        // 从最高层开始逐行打印
        for (int level = maxHeight; level > 0; level--) {
            // 遍历每一列(每个数组元素)
            for (int j = 0; j < n; j++) {
                // 当前元素高度大于等于当前层级就打星号,否则打空格
                if (arr[j] >= level) {
                    System.out.print("* ");
                } else {
                    System.out.print("  ");
                }
            }
            // 一行打印完换行
            System.out.println();
        }
    }
}

效果验证

输入示例的参数:

5
3
1
0
7
5

输出结果和需求的示例效果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 07:27:03