【问题标题】:How to print number of stars corresponding to some numbers vertically?如何垂直打印与某些数字对应的星数?
【发布时间】:2026-01-31 01:55:01
【问题描述】:

我正在尝试制作一个垂直显示的直方图,我的输出给出了不正确的模式。

输入:

unqNums = [0.0, 2.0, 1.0, 5.0]
repeated = [2, 2, 1, 1]

输出:

*    *
*    *    *    *
0.0, 2.0, 1.0, 5.0

我的代码:

 System.out.println(Arrays.toString(gradesNoRepead));
 //[0.0, 2.0, 1.0, 5.0]
 System.out.println(Arrays.toString(repeatedVal));
 //[2, 2, 1, 1]
//getting the max rep
        int mxRep = Main.getMax(repeatedVal);
        for(int i = mxRep; i > 0; --i){
            for(int l=0; l<gradesNoRepead.length; ++l){
        
                System.out.print((gradesNoRepead[l] >= i) ? " * " : "  ");
            }
            System.out.println();
        }
        for (int m = 0; m < gradesNoRepead.length; m++) {
            System.out.print(" " + gradesNoRepead[m] + " ");
    }
    

【问题讨论】:

    标签: java arrays histogram


    【解决方案1】:

    您的问题是,在您输出 * 值的循环中,您正在迭代并测试错误数组 (gradesNoRepead) 中的值,您应该使用 repeatedVal

    for(int l=0; l<repeatedVal.length; ++l){
        System.out.print((repeatedVal[l] >= i) ? "  *  " : "     ");
    }
    

    请注意,您还需要在输出字符串中添加更多空格,以使它们与 gradesNoRepead 值的宽度正确匹配。

    【讨论】: