속이 비어있는 정사각형
스캐너로 숫자를 입력받아서 정사각형 형태로 별을 찍을 것인데, 가운데 부분은 비어 있는 형태로 출력되도록 할 것이다. 스캐너와 조건문을 이용하여 별을 찍어보자.
스캐너로 숫자를 입력받기
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", " ");
}
}
}
}
}
이클립스에서 실행 시 콘솔창에 보여지는 화면
댓글