如何把直方图中最大矩形用不同记号表示出来

已有代码如下,输出图一的直方图,如何在此基础上求最大矩形面积并且把该矩形用不同记号表示出来,效果如图二

img

img

    double[] data1 = {1.1d, 1.9d, 2.2d, 3.0d, 5.1d, 5.2d, 4.3d, 0.1d, 4.5d, 5.1d};
    
    int[] idata1 = new int[data1.length];
    

int j1;
for (j1 = 0; j1 < data1.length; j1++) {
idata1[j1] = (int) data1[j1];
}

    double maxData1d = 0.0d;
    for (double i1d: data1)
        if (i1d > maxData1d)
            maxData1d = i1d;

    int maxData1 = 0;
    for (int i1 : idata1) {
        if (i1 > maxData1)
            maxData1 = i1;
    }

    int hYWertData1 = maxData1;
    int k1;

    int maxhYWertData1 = hYWertData1;
    System.out.println("Aufgabe 1 Histogramm 1");
    System.out.println("Wert " + 6 + "|");
    for (hYWertData1 = maxData1; hYWertData1 >= 1; hYWertData1--){
            if (/**maxYData1 = true && */hYWertData1 % 2 == 0 && hYWertData1 == maxData1)
                System.out.print("     " + hYWertData1 + "|");
            else if (/**maxYData1 = true && */hYWertData1 % 2 == 1 && hYWertData1 == maxData1)
                System.out.print("     " + " |");
            else if (/*maxYData1 = false && */hYWertData1 % 2 == 0 && hYWertData1 == maxData1)
                System.out.print("Wert " + hYWertData1 + "|");
            else if (/*maxYData1 = false && */hYWertData1 % 2 == 1 && hYWertData1 == maxData1)
                System.out.print("Wert " + " " + "|");
            else if (hYWertData1 % 2 == 0 && hYWertData1 < maxData1)
                System.out.print("     " + hYWertData1 + "|");
            else if (hYWertData1 % 2 == 1 && hYWertData1 < maxData1)
                System.out.print("     " + " |");


    for (k1 = 0; k1 < data1.length; k1++)  
        if (data1[k1] >= hYWertData1)
                System.out.print("X");   
            else
                System.out.print(" ");    
        System.out.println();      

    }
    System.out.print("      " + "+");
    for (j1 = 1; j1 <= data1.length + 1; j1++) {
        if (j1 % 3 != 0)
            System.out.print("-");
        if (j1 % 3 == 0){
            System.out.print(j1);
        }

    /*
    for (j1 = 0; j1 <= data1.length + 8; j1++){
        if (j1 < data1.length + 4)
            System.out.print(" ");
        if (j1 == data1.length + 4)
            System.out.print("P");
        if (j1 == data1.length + 5)
            System.out.print("u");
        if (j1 == data1.length + 6)
            System.out.print("n");
        if (j1 == data1.length + 7)
            System.out.print("k");
        if (j1 == data1.length + 8)
           System.out.print("t");
        break;
    }
   


    }

    System.out.println();
    System.out.print("       ");
    for (int x1 = 0; x1 < data1.length +1 - 5; x1++) {
        System.out.print(" ");
    }
    System.out.print("Punkt");
    System.out.println();

图片顺序反了,下图是输出,上图是替换后

最后一段打错了,多了注释符,下面这段接在彩色部分之后
System.out.println();
System.out.print(" ");
for (int x1 = 0; x1 < data1.length +1 - 5; x1++) {
System.out.print(" ");
}
System.out.print("Punkt");
System.out.println();