본문 바로가기

JAVA/국비 공부

3월8일수업(별찍기10)

- 3월9일 업로드

 

package day0308;
//별찍기 10번

import java.util.Scanner;

public class StarsPrint10 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.println("별찍기 10번");

        System.out.println("출력 줄 수 입력");
        System.out.print(">");
        int user = scanner.nextInt();

        int maxLength = 2 * user - 1;
        for (int i = 1; i <= maxLength; i++) {
            String stars = new String();

            if (i == 1 || i == maxLength) {
                // 첫번째 줄 혹은 마지막 줄이므로
                // 별을 9개만 넣어준다.

                // 별을 담당하는 j for문
                for (int j = 1; j <= maxLength; j++) {
                    stars += "*";
                }
            } else {
                // 그외의 경우
                // 윗부분이건 아랫부분이건
                // 별 - 공백 - 별이라는 형태이므로
                // if -else 구조를 통해 별의 갯수와 공백의 갯수를 정하고
                // j for문 3개를 만들어 각각의 갯수만큼의 별과 공백을
                // stars에 추가한다.

                // 해당 줄의 별의 갯수를 저장할 int starsWidth
                int starWidth = 0;
                // 해당 줄의 공백의 갯수를 저장할 int spaceWIdth
                int spaceWidth = 0;

                // starWidth의 값을 정하는 if-else
                if (i < user) {
                    // 윗부분
                                    
                    //윗부분일때 사용될 int upperI
                    
                    int upperI = i - 1;                   
                    starWidth = user - upperI;
                   
                } else {
                    // 아랫부분

                    // 아랫부분일때 사용될 int lowerI
                    int lowerI = i - user + 1;
                    starWidth = lowerI;
                }

                //공백의 갯수는 윗부분이건 아랫부분이건
                // 총너비 - 왼쪽 별의 갯수  - 오른 쪽 별의 갯수이고
                //왼쪽 별의 갯수와 오른쪽 별의 갯수는 둘다  starWidth이다
                //따라서 아래와 같이 
                //공백의 갯수 = 총 너비  - 2 * 별의 갯수로 적어 줄 수 있다.
                spaceWidth = maxLength - 2 * starWidth;
                
                // 왼쪽 별을 담당하는 j for문

                for (int j = 1; j <= starWidth; j++) {
                    stars += "*";
                }

                // 가운데 별을 담당하는 j for문
                for (int j = 1; j <= spaceWidth; j++) {
                    stars += " ";
                }

                // 오른쪽 별을 담당하는 j for문
                for (int j = 1; j <= starWidth; j++) {
                    stars += "*";
                }
            }

            System.out.println(stars);
        }

        scanner.close();

    }

}

'JAVA > 국비 공부' 카테고리의 다른 글

3월9일 수업(로또01)  (0) 2021.03.09
3월9일수업(배열)  (0) 2021.03.09
3월8일수업(별찍기09)  (0) 2021.03.08
3월8일 수업(별찍기08)  (0) 2021.03.08
3월8일(별찍기07)  (0) 2021.03.08