포스팅 OS : Mac
검색어 : 자바(Java), 배열(Array), 별(Star)
오늘은 자바 기초 공부를 위해 배열을 사용해 입력받은 정수에 따라 점점 커지는 별 그리는 방법에 대해 포스팅합니다.
요즘 일이 바빠서 블로그에 관심을 가지지 못했습니다 ㅠ
그래도 짬짬히 올려보도록 하겠습니다.
그럼 소스를 보도록 하죠.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 | import java.util.Scanner; public class Star { public static void main(String[] args) { /* 별 그리기 - 다리 5개 */ System.out.println("숫자를 입력해주세요."); Scanner input = new Scanner(System.in); int answer; // 입력받은 정수 int heigt; // 별 세로 길이 int width; // 별 가로 길이 int center; // 가로 중간 지점 int top; // 머리 종료 지점 int middle; // 몸통 종료 지점 int bottom; // 다리 종료 지점 // 입력받은 정수 저장 answer = input.nextInt(); // 별 세로 길이 생성 heigt = answer * 9; // 별 가로 길이 생성 width = answer * 15; // 가로 길이가 짝수일 경우 + 1 if(width % 2 == 0) { width += 1; } // 가로 중간 지점 생성 center = width / 2; // 머리,몸통,다리 종료 위치 지정 top = heigt / 3; middle = top * 2; bottom = top * 3; /* System.out.println("입력한 정수 = " + answer); // 입력받은 정수 System.out.println("총 세로 길이 = " + heigt); // 별 세로 길이 System.out.println("총 가로 길이 = " + width); // 별 가로 길이 System.out.println("가로 중간 지점 = " + center); // 가로 중간 지점 System.out.println("상단 = " + top); // 상단 System.out.println("중간 = " + middle); // 중간 System.out.println("하단 = " + bottom); // 하단 */ char[][] star = new char[heigt][width]; // 별의 세로, 가로 길이로 배열 생성 int start; // 시작 지점 int end; // 종료 지점 int startBottom; // 하단 시작 지점 int endBottom; // 하단 종료 지점 // 별 머리 생성 start = center; end = center; for(int a = 0 ; a < top ; a++){ for(int b = 0 ; b < width ; b++){ if(start <= b && b <= end) { star[a][b] = '*'; }else { star[a][b] = ' '; } } start--; end++; } // 별 몸통 생성 start = 0; end = width - 1; for(int a = top ; a < middle ; a++){ for(int b = 0 ; b < width ; b++){ if(start <= b && b <= end) { star[a][b] = '*'; }else { star[a][b] = ' '; } } start++; end--; } // 별 다리 생성 startBottom = center; endBottom = center; for(int a = middle ; a < bottom ; a++){ for(int b = 0 ; b < width ; b++){ if(startBottom <= b && b <= endBottom) { star[a][b] = ' '; }else { star[a][b] = '*'; } if(start -1 > b || end +1 < b) { star[a][b] = ' '; } } start--; end++; startBottom -= 3; endBottom += 3; } // 별 배열 출력 for(int a=0 ; a < heigt ; a++){ for(int b=0 ; b < width ; b++){ System.out.print(star[a][b]); } System.out.println(); } } } | cs |
오늘도 역시 설명은 주석으로 대체합니다.
저는 별을 머리, 몸통, 다리로 구분하여 그리는 방법을 사용했습니다. 제가 만든 별이 완벽한 별의 모양일까? 라는 의문이 들긴 하는데 좀 더 정확한 별을 그리고 싶으시다면 좀더 세세하게 셋팅하면 될 것 같네요.
위 소스를 실행하면 아래와 같이 별이 그려집니다.
다음엔 원 그리기 포스팅을 하도록 하겠습니다.
'Developer > Java Basic' 카테고리의 다른 글
[Java] 배열을 사용해 입력받은 정수에 따라 점점 커지는 원 그리기 (피타고라스 정리 사용) (0) | 2018.06.07 |
---|---|
[Java] 배열을 사용해 입력받은 정수에 따라 점점 커지는 마름모 그리기 (0) | 2018.03.13 |