已有代码如下,输出图一的直方图,如何在此基础上求最大矩形面积并且把该矩形用不同记号表示出来,效果如图二
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();