반응형

문제:

Scanner객체를 이용하여 배열에 두 자리 수치(분기별 판매량)를 12개 받아들인 다음, 가로 막대그래프로 표시하는 프로그램을 작성하라.

(수치(예) : 11,27,23,19,54,56,34,67,12,22,32,12)

1. 해법 정리

  1. 12개의 배열을 선언한다
  2. 각 수치를 nextInt()로 받는다
  3. 각 배열에 저장된 수치의 양 만큼 문자(막대그래프)로 보여준다
  4. (3)번 과정을 배열의 길이(12개)만큼 반복한다

2. 풀이 과정

수업시간에 배웠던 배열의 요소에 키보드 입력 값을 넣는 방법을 이용하여, 비교적 수월하게 문제를 해결할 수 있었습니다. 해법 정리에 나열한 것과 같이, 문제를 해결하기 위해 준비할 단계에서부터 이미 해답은 나와 있었습니다.

수치를 저장할 공간인 배열 a를 초기화-> Scanner로 a.length번 정수형 변수를 a[i]번째에 입력 -> a[i]번째 공간에 있는 값만큼 그래프 보여주기 (완료)

그리고 오늘 새로 알게 된 ‘배열이름.length’ 구문을 이용해 좀 더 편리하게 반복문을 구현할 수 있었습니다.

그리고 아래의 스크린샷은 제작 초기에 막대그래프를 그리는 데 성공한 모습입니다.

java_report_3-8_1

3. 소스 코드(MakdeGraph.java)

import java.util.Scanner;// 소스의 첫 부분에서 Scanner 기능을 가져옴  
public class MakdeGraph {
public static void main(String args[]){
int[] a = new int[12]; // 수치를 저장할 공간 a를 int형으로 선언
Scanner kbd = new Scanner(System.in);
for(int i=0; i<a.length; i++){ // 인덱스 변수 i를 임시로 생성, 12개(a.length)의 수 입력받음
    System.out.print((i+1)+"번째 숫자 입력:");
    a[i]=kbd.nextInt(); // a배열의 i번째에 int형 자료 대입
}
for(int numb=0; numb<a.length; numb++) // 인덱스 변수 numb를 임시 생성, 마찬가지로 12개 반복
{
System.out.print("\n"+(numb+1)+"번째\t"+a[numb]+"\t"); // 출력구문(앞쪽: ~번째, 수치)
    for(int i=0;i<a[numb]; i++){ // 인덱스 변수 i를 임시 생성, numb번째의 a배열의 개수만큼 출력
    System.out.print("★"); // 문자는 별모양으로 지정
}    
}                
}
}

4. 실행 화면

java_report_3-8_2

5. 시행 착오

일단 계획한 순서대로 키보드로 1~12번째 숫자를 입력하게 하여 for 구문을 통해 배열의 0번째 요소부터 11번째 요소까지 저장하는 데는 문제가 없었습니다.

그리고 시험 삼아 1번째 요소의 값만큼 문자를 표시하게 하는 데 성공을 하고 나니, 문제 해결에 박차를 가할 수 있었습니다. 별다른 시행 착오를 겪지 않았습니다.

반응형
,