개요
이 글에서는 자바(Java)를 이용해 숫자 '8' 모양의 별(*) 패턴을 출력하는 방법을 소개합니다. 이 패턴은 여러 개의 for 반복문과 print 문을 조합해 만들 수 있으며, 반복문과 조건문의 동작 원리를 익히기에 좋은 예제입니다.
아래는 실제 실행 결과의 예시입니다.
입력 예시
숫자를 입력하세요 : 8
출력 결과
8 패턴 : ****** * * * * * * * * * * * * ****** * * * * * * * * * * * * ******
알고리즘
패턴 출력 로직은 다음 단계로 구성됩니다.
- 시작 — 프로그램을 실행합니다.
- 정수형 변수 i, j, k와 my_input을 선언합니다.
- 사용자로부터 필요한 값을 입력받거나, 값을 직접 정의합니다.
- k에 'my_input × 2 − 1'을 할당해 전체 행(row)의 개수를 계산합니다.
- 중첩 for 루프를 순회하며 각 위치에 출력할 문자를 결정합니다.
- 현재 행이 첫 번째 행, 중간 행(my_input), 마지막 행(k)이라면 가로줄(*)을 출력하고, 그렇지 않으면 양쪽 끝에만 *를 찍습니다.
- 한 행의 출력이 끝날 때마다 줄바꿈을 수행해 다음 줄로 넘어갑니다.
- 결과를 화면에 표시합니다.
- 종료
예제 1 — 사용자 입력값으로 출력하기
첫 번째 예제는 Scanner 클래스로 사용자에게 숫자를 직접 입력받은 뒤, 해당 크기의 패턴을 출력합니다.
import java.util.Scanner;
public class EightPattern {
public static void main(String[] args) {
int my_input, k, i, j;
System.out.println("필요한 패키지가 임포트되었습니다");
Scanner my_scanner = new Scanner(System.in);
System.out.println("Scanner 객체가 생성되었습니다");
System.out.print("숫자를 입력하세요 : ");
my_input = my_scanner.nextInt();
System.out.println("8 패턴 : ");
k = my_input * 2 - 1;
for (i = 1; i <= k; i++) {
if (i == 1 || i == my_input || i == k)
for (j = 1; j <= my_input; j++) {
if (j == 1 || j == my_input)
System.out.print(" ");
else
System.out.print("*");
}
else
for (j = 1; j <= my_input; j++) {
if (j == 1 || j == my_input)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}
실행 결과
필요한 패키지가 임포트되었습니다 Scanner 객체가 생성되었습니다 숫자를 입력하세요 : 8 8 패턴 : ****** * * * * * * * * * * * * ****** * * * * * * * * * * * * ******
예제 2 — 고정된 값으로 출력하기
두 번째 예제는 값을 코드에 미리 정의해 두고 그대로 사용해 패턴을 출력합니다. 입력 절차 없이 결과만 빠르게 확인할 때 유용합니다.
public class EightPattern {
public static void main(String[] args) {
int my_input, k, i, j;
my_input = 8;
System.out.println("크기가 " + my_input + "으로 지정되었습니다");
System.out.println("8 패턴 : ");
k = my_input * 2 - 1;
for (i = 1; i <= k; i++) {
if (i == 1 || i == my_input || i == k)
for (j = 1; j <= my_input; j++) {
if (j == 1 || j == my_input)
System.out.print(" ");
else
System.out.print("*");
}
else
for (j = 1; j <= my_input; j++) {
if (j == 1 || j == my_input)
System.out.print("*");
else
System.out.print(" ");
}
System.out.println();
}
}
}
실행 결과
크기가 8으로 지정되었습니다 8 패턴 : ****** * * * * * * * * * * * * ****** * * * * * * * * * * * * ******
마무리
조건문과 중첩 반복문을 적절히 조합하면 숫자 8 형태의 별 패턴을 손쉽게 출력할 수 있습니다. my_input 값만 바꾸면 원하는 크기의 패턴을 자유롭게 만들 수 있으니, 다양한 크기로 직접 테스트해 보시길 권장합니다.