我正在为学校制作一个直方图项目,该项目循环遍历一个数组,并在每次给定数字部分出现一个数字时创建一个 * 。输出应如下所示:
1-10 | *****
11-20 | ****
21-30 | *
31-40 | ***
41-50 | *
51-60 | *
61-70 | *
71-80 |
81-90 | *
91-100 | ********
对于一个数组:
int 数组[] = {19, 4, 15, 7, 11, 9, 13, 5, 45, 56, 1, 67, 90, 98, 32, 36, 33, 25, 99, 95, 97 , 98, 92, 94, 93, 105};
我正在尝试找出一种方法使这段代码更加面向对象。但是,我想不出办法。
这是我的代码:
public class Main {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
int array[] = {19, 4, 15, 7, 11, 9, 13, 5, 45, 56, 1, 67, 90, 98, 32, 36, 33, 25, 99, 95, 97, 98, 92, 94, 93, 105};
histogram(array);
}
public static void histogram(int[] input) {
String output1 = new String ();
String output2 = new String ();
String output3 = new String ();
String output4 = new String ();
String output5 = new String ();
String output6 = new String ();
String output7 = new String ();
String output8 = new String ();
String output9 = new String ();
String output10 = new String ();
for (int x = 0; x < input.length; x++) {
if (input[x] <= 100) {
if (input[x] >= 1 && input [x] <= 10) output1 += "*";
if (input[x] >= 11 && input [x] <= 20) output2 += "*";
if (input[x] >= 21 && input [x] <= 30) output3 += "*";
if (input[x] >= 31 && input [x] <= 40) output4 += "*";
if (input[x] >= 41 && input [x] <= 50) output5 += "*";
if (input[x] >= 51 && input [x] <= 60) output6 += "*";
if (input[x] >= 61 && input [x] <= 70) output7 += "*";
if (input[x] >= 71 && input [x] <= 80) output8 += "*";
if (input[x] >= 81 && input [x] <= 90) output9 += "*";
if (input[x] >= 91 && input [x] <= 100) output10 += "*";
}
else {
break;
}
}
System.out.println("1-10 | " + output1);
System.out.println("11-20 | " + output2);
System.out.println("21-30 | " + output3);
System.out.println("31-40 | " + output4);
System.out.println("41-50 | " + output5);
System.out.println("51-60 | " + output6);
System.out.println("61-70 | " + output7);
System.out.println("71-80 | " + output8);
System.out.println("81-90 | " + output9);
System.out.println("91-100 | " + output10);
}
}
最佳答案
既然可以把事情变得复杂,为什么还要把事情变得简单呢?
public static void main(String[] args) {
int array[] = {19, 4, 15, 7, 11, 9, 13, 5, 45, 56, 1, 67, 90, 98, 32, 36, 33, 25, 99, 95, 97, 98, 92, 94, 93, 105};
histogram(array);
}
public static void histogram(int[] input) {
for(int i = 1; i<101; i = i+10){
System.out.print(i + "-" + (i+9) + "\t| ");
for(int j = 0; j< input.length; j++){
if(input[j] >= i && input[j] < i+10)
System.out.print("*");
}
System.out.println();
}
}
关于java - 如何在不导入任何 java 库的情况下使直方图更加 OOPy?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41124997/