POST

JAVA 입력받은 값들의 분포를 시각적으로 볼 수 있는 히스토그램으로 만들어라

입력받은 값들의 분포를 시각적으로 볼 수 있는 히스토그램(histogram)을 만드는 프로그램을 작성 하시오.

이 프로그램은 1과 100사이의 정수 10개를 읽어야 하고 1-10, 11-20 등의 범위에 드는 값들의 횟수를 아래와 같이 출력하여야 한다.


조건1 배열을 사용

조건2 1~100까지의 정수 10개


결과

1   -   10: 

11 -   20: 

21 -   30: * * 

31 -   40: * 

41 -   50: * * * 

51 -   60: 

61 -   70: * * 

71 -   80: * * 

81 -   90: 

91 - 100:  



public static void main(String[] args) {

Histogram histo = new Histogram(); // Histogram class의 객체 histo 생성


histo.getnum(); // histo 객체의 getnum 메소드 호출

histo.print(); // histo 객체의 print 메소드 호출

}

 

class Histogram

{

private int num;

private int[] count = new int[10]; 

public void getnum() { // 랜덤으로 정수 10개를 입력받아 해당범위의 값 증가

for(int i =0;i<10;i++){

num = (int)(Math.random()*100)+1; // num변수에 랜덤정수 저장

/* 정수가 각 범위에 해당되면 해당범위의 값 증가 */

if(num<=10) 

count[0]++;

else if(num<=20)

count[1]++;

else if(num<=30)

count[2]++;

else if(num<=40)

count[3]++;

else if(num<=50)

count[4]++;

else if(num<=60)

count[5]++;

else if(num<=70)

count[6]++;

else if(num<=80)

count[7]++;

else if(num<=90)

count[8]++;

else if(num<=100)

count[9]++;

}

}

public void print() {

/* 각 범위의 값을 가지고 print 메소드 호출 */

System.out.print("1   -   10: ");

star(count[0]);

System.out.print("11 -   20: ");

star(count[1]);

System.out.print("21 -   30: ");

star(count[2]);

System.out.print("31 -   40: ");

star(count[3]);

System.out.print("41 -   50: ");

star(count[4]);

System.out.print("51 -   60: ");

star(count[5]);

System.out.print("61 -   70: ");

star(count[6]);

System.out.print("71 -   80: ");

star(count[7]);

System.out.print("81 -   90: ");

star(count[8]);

System.out.print("91 - 100:  ");

star(count[9]);

}

public void star(int c) {

/* *을 찍고 다음줄로 내림 */

for(int i=0;i<c;i++){

System.out.print("* ");

}

System.out.println();  

}

}