JAVA_Learn/Basic

#2. 별(*)찍기 _ 피라미드

CEJ_0929 2021. 12. 9. 13:36

정수를 입력받고,

입력받은 정수 만큼의 길이를 가진 정방향 피라미드를 출력하는 방법이다.

 

처음에는 정신 못차렸는데, 자꾸 하다보니까

반복문에게 '역할'을 부여하고 설계할 수 있게 됐다.

 

이제 별 찍기는 두렵지 않아!!! ^ ^ !!

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
 
public static void main(String[] args) {
 
/*굳이 result 에 담아서 한 번에 매 반복마다 출력식을 사용하지 않기 위함이다.*/
        
        Scanner sc = new Scanner(System.in);
        int n = 0;
 
        //res 에 결과를 모았다가 출력을 한번에 한다
        String res = ""
        
        System.out.print("몇 줄 피라미드?: ");
        n = sc.nextInt();
        
        //총 출력될 줄 개수
        for (int i = 1; i <= n; i++) {
            
            //공백 담당
            for (int j = n-i; j > 0; j--) res+=" ";        
            //* 담당
            for (int j = 0; j < (i*2)-1; j++) res+="*";
            
            //줄바꿈
            res +="\n";    
        }
        System.out.println(res);
        
    }
cs

 

 

 

 

 

+ 입력받은 정수만큼의 길이를 가진 마름모 출력하기.

   전체 줄 수와 상단부 (공백이 점점 감소하는)와

  하단부 (공백이 점점 증가하는)를 나눠 출력하도록 식을 구성했다.

 

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
/*     *       *
 *            ***
 *           *****
 *          *******    
 *         *********    5
 *          *******     
*         *****
 *            ***    
 *             *
 *
 *     5 입력시 5번째 줄 까지는 정방 피라미드
 *  6번째 줄 부터는 역방 피라미드가 출력되어 총 9줄로 구성된 마름모가 출력된다.    
 */
public static void main(String[] args) {
 
        Scanner sc = new Scanner(System.in);
 
        int choice = -1;
        int starCnt = 0;
        int elCnt = 0;
 
 
        //프로그램 종료를 담당
        while(choice != 0) {
            
            starCnt = 0;
            elCnt = 0;
            
            System.out.print("원하는 마름모 행은?  (종료: 0)");
            choice = sc.nextInt();
 
            if(choice==0) {
                System.out.println("종료합니다.");
                break;
            } else if(choice == 1) {
                System.out.println("2부터 입력됩니다.");
                continue;
            }
        
 
            //맞는 조건 입력 시 마름모 그리는 영역
            else {
 
                int x = choice;
 
 
                //전체 행 출력 부 
                for (int i = 1; i < (choice*2); i++) {
 
                    //상단부 
                    if(i<=choice) {
                        
                        for (int j = 1; j < x; j++
                            System.out.print(" ");
                            
                        x--;
 
 
                        for (int k = 1; k < (i*2); k++) {
                            System.out.print("*");
                            starCnt = k; //하단부에서 별의 개수.
                        }
                        System.out.println("");
                    
 
                    } else { //i가 choice 보다 커진 상황 .. 
 
                        //하단부 
                        elCnt++//하단부의 공백 칸 수
                        for (int j = 0; j < elCnt; j++
                            System.out.print(" ");
                        
                        for (int r = 2; r < starCnt; r++
                            System.out.print("*");
                        
 
                        starCnt -=2;
                        System.out.println("");
                    }
 
                }
            }
 
 
        }
 
    }
cs

 

 


 

JAVA의 꽃은 클래스와 인터페이스라고 하지만 역시 내 최애는 반복문이다 ㅎㅎㅎㅎ