개발/JAVA

[JAVA] 자바 - for문을 이용해서 별로 여러가지 삼각형 출력하기

윤_ve 2021. 2. 1. 21:18

이번엔 자바 for문 중첩을 이용해서

별을 직각삼각형, 삼각형, 마름모로 나타내는 것을 연습해보려고 한다.

 

1. 

*

**

***      ==>출력하기

****

*****

for (int i = 1; i < 6; i++) {
	for (int j = 0; j < i; j++) {
		System.out.print("*");
	}
	System.out.println();
}

우선 변수 i는 행의 횟수를 뜻하고, 변수 j는 반복되는 '*'의 갯수를 의미한다.

i 가 한줄 반복 될때마다 j가 1씩 증가하며 적히는데, 조건에 j < i라고 둬서

j가 i보다 작을 때만 '*'이 출력되게 만들었다. 위 코드를 실행 해보면

이렇게 별이 출력된다.

 

2.

*****

****

***       ==> 출력하기

**

*

 

for (int i = 1; i < 6; i++) {
	for (int j = 6; j > i; j--) {
		System.out.print("*");
	}
	System.out.println();
}

다음은 반대로 출력하는 방법인데

위의 1번의 코드와 비슷한데 변수j 가 5에서 -1까지 떨어지고 j가 i보다 클때만 '*'을 출력한다.

 

3.

     *

    **

   ***      ==> 출력하기

  ****

 *****

 

		for (int i = 0; i < 6; i++) {
			for (int j = 5; j > 0; j--) {
				if (i < j) {
					System.out.print(" ");
				} else
					System.out.print("*");
			}
			System.out.println();
		}

 

이것도 크게 바뀌는것 없이 변수j만 바꿔주면 출력된다.

if 문을 사용해서 나타낼 수 있다.

이렇게 출력된다.

 

4.

*****

 ****

  ***      ==> 출력하기

   **

    *

 

		for (int i = 0; i < 5; i++) {
			for (int j = 1; j <= 5; j++) {
				if (i < j) {
					System.out.print("*");
				} else
					System.out.print(" ");
			}
			System.out.println();
		}

4번은 j가 1부터 5보다 작을때 1씩 증가하고 j가 1보다 클 때만  '*'을 출력한다.

위를 출력해보면 

 

이렇게 나온다.

 

5.

이런 모양을 출력하는건데 위의 1 ~ 4번 까지의 적었던 식을 합치면 어렵지 않게 만들 수 있다.

		for (int i = 1; i < 6; i++) {
			for (int j = 5; j > i; j--) {             //위쪽 삼각형
				System.out.print(" ");
			}
			for (int j = 1; j <= i * 2 - 1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
		for (int i = 4; i > 0; i--) {                //아래쪽 삼각형
			for (int j = 5; j > i; j--) {
				System.out.print(" ");
			}
			for (int j = 1; j <= i * 2 - 1; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

 

마름모(다이아몬드 모양은) 삼각형과 뒤집힌 삼각형이 합쳐진 형태 이므로 각각 삼각형 한 쪽 씩 출력하면

마름모 모양이 나온다.

그리고 별은 한줄에 항상 홀수개만 나올수 있기 때문에 i * 2 - 1만 잘 넣으면 충분히 만들어 낼 수 있다.