본문 바로가기
Language/Java

[Java] 속이 빈 정사각형 별 찍기 예제

Writer mintparc 2019. 10. 3.

속이 비어있는 정사각형


스캐너로 숫자를 입력받아서 정사각형 형태로 별을 찍을 것인데, 가운데 부분은 비어 있는 형태로 출력되도록 할 것이다. 스캐너와 조건문을 이용하여 별을 찍어보자.

 

 

 

스캐너로 숫자를 입력받기


Scanner sc = new Scanner(System.in);
System.out.println("숫자를 입력하세요.");
int number = sc.nextInt();

 

 

규칙 찾기


for문을 이용해서 규칙에 맞게 * (별)이 출력되도록 할 것이다.

  • 첫 번째 규칙 : 맨 윗줄과 맨 아랫줄은 입력받은 숫자만큼 별이 출력된다.
  • 두 번째 규칙 : j가 0일 때와 j가 number - 1 일때 별이 출력된다.
  • 세 번째 규칙 : 모두 아닐 때 공백이 출력된다.

 

for(int i = 0; i < number; i++) {
	System.out.println();
}    

우선 for문을 이용해서 입력받은 숫자만큼 행을 생성할 것이다.

만약 3을 입력받았다면 한 번돌고 println으로 줄 바꿈 하고, 이런식으로 총 세 번 돌아 행을 세 개를 만들어낸다.

 

for(int j = 0; j < number; j++) {
	// 별찍기
}

그리고 열 또한 입력받은 숫자만큼 생성한다. 그러나 아직 별을 어디에 어떻게 찍을 것인지는 작성하지 않은 상태이다.

가운데는 비어있는 형태로 별을 출력해야 하므로 if문을 사용해서 별을 출력할 때와 공백을 출력할 때를 구분해주어야 한다.

 

// 맨 윗줄과 아랫줄은 number만큼 * 출력
if((i == 0) || (i == number-1)) {
	System.out.printf("%2s","*");
				
// 만약 j가 0이거나, j가 number-1이라면 *출력
} else if((j == 0)||(j == number -1)) {
	System.out.printf("%2s","*");
					
// 그렇지 않다면 공백 출력
} else {
	System.out.printf("%2s", " ");
}

상단에 작성했던 규칙을 토대로 코드를 작성한다. 가독성을 위해 출력문 서식을 사용했다.

 

 

전체 코드


import java.util.Scanner;

public class Star {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 입력하세요.");
		int number = sc.nextInt();
		
		// 행
		for(int i = 0; i < number; i++) {
			System.out.println();
			// 열
			for(int j = 0; j < number; j++) {
				// 맨 윗줄과 아랫줄은 number만큼 * 출력
				if((i == 0) || (i == number-1)) {
					System.out.printf("%2s","*");
				
				// 만약 j가 0이거나, j가 number-1이라면 *출력
				} else if((j == 0)||(j == number -1)) {
					System.out.printf("%2s","*");
					
				// 그렇지 않다면 공백 출력
				} else {
					System.out.printf("%2s", " ");
				}
			}
		}

	}
}

 

 

이클립스에서 실행 시 콘솔창에 보여지는 화면


댓글