본문 바로가기
IT/Java

Java (정수 입력 히스토그램)

by hjshims 2021. 5. 10.

원하는 정수 값을 입력 받아 그 갯수 만큼 히스토그램을 출력하는 프로그램

 

package p0510;

import java.util.Scanner;

public class IntHistogram {
	static Scanner scan = new Scanner(System.in);
	static int[] histogram;
	static int[] cnt = new int[10]; // 히스토그램 데이터를 카운트 하기 위한 배열
	static String[] title = { "1-9", "10-19", "20-29", "30-39", "40-49", "50-59", "60-69", "70-79", "80-89", "90-99", };
	static int i, j, star = 0;

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		while (true) {
			System.out.print("인원수를 입력하세요. ");
			int inwon = scan.nextInt();
			System.out.println("1-99 사이의 정수를 입력하세요.");
			histogram = new int[inwon];	//입력 받은 수 만큼 히스토그램 데이터 배열 크기 지정
			input(inwon);		//input 메소드에서 연산한 결과 가져와서 실행
			print();		//print 메소드에서 연산한 결과 가져와서 실행
			break;
		}
	}

	public static void input(int su) {
		for (int k = 0; k < su; k++) {
			int num = scan.nextInt(); // 길이 갯수 만큼 입력 (10개)
			histogram[k] = num; // 입력한 값을 histogram 배열에 저장

			if (num <= 0) { // 입력한 값이 0이거나 음수이면 무시
				continue; // while문으로 돌아감, i는 계속 증가=카운트됨
			}
			int star = histogram[k] / 10; // 몫의 배열을 인덱스로 이용
			cnt[star]++; // 출력할 "*"의 갯수 카운트
		}
	}

	public static void print() {
		for (i = 0; i < cnt.length; i++) {
			System.out.print(title[i] + ": ");
			for (j = 0; j < cnt[i]; j++) { // 입력한 정수의 갯수만큼만 "*" 출력
				System.out.print("*");
			}
			System.out.println();
		}

	}

}

 

<출력결과>