씨네
공부하는 개발자 강씨네
씨네
  • 분류 전체보기 (460)
    • Web (21)
      • HTML (11)
      • CSS (10)
    • JS 관련 (49)
      • JavaScript (27)
      • JQuery (22)
    • TS 관련 (15)
      • TypeScript (15)
    • NodeJS (7)
      • NodeJS (7)
    • 따라하며 배우는 시리즈 (23)
      • NodeJS & ReactJS Basic (23)
      • NodeJS & ReactJS Movie (0)
      • NodeJS & ReactJS Youtube (0)
      • NodeJS & ReactJS ChatBot (0)
    • SPA (14)
      • React (14)
      • Vue (0)
      • Anguler (0)
    • Java 관련 (118)
      • Java (52)
      • JDBC (6)
      • JSP & Servlet (18)
      • Spring Legecy (38)
      • SpringBoot (4)
    • Python (26)
      • Python (20)
      • PyMongo (1)
      • Django (5)
    • Git (24)
      • Github (24)
    • RDB (22)
      • Oracle (21)
      • MySQL (1)
    • NoSQL (5)
      • MongoDB (5)
    • OS (4)
      • Linux (4)
    • 빅데이터 (2)
      • hadoop (2)
    • IDE (20)
      • eclipse (11)
      • VSCODE (4)
      • VisualStudio (1)
      • IntelliJ (1)
      • PyCharm (1)
      • DBeaver (2)
    • Install (3)
      • Tomcat (1)
      • Docker (1)
      • Anaconda (1)
    • 오류&에러 (28)
      • TS (2)
      • NodeJS (7)
      • SQL (8)
      • Java (1)
      • Spring (4)
      • Git (6)
      • 기타 (0)
    • 알고리즘 (67)
      • 수열 (1)
      • 백준(backjoon) (39)
      • Programmers (27)
    • 자격증 (5)
      • SQLD (5)
    • 기타 (2)
    • IT유튜브로 지식쌓기 (2)

공지사항

인기 글

최근 글

티스토리

250x250
hELLO · Designed By 정상우.
씨네

공부하는 개발자 강씨네

[Java] for문, 별찍기
Java 관련/Java

[Java] for문, 별찍기

2021. 10. 12. 07:59
728x90


for문을 이용해서 다음과 같이 *을 출력하세요


//문제1. 
int num = 1; 
int xSum = 0; 

for(int i = 1; i <= 5; i++) { 
	for(int j = 1; j <= 5 ;j++) { 
		System.out.printf("%2d ", num); 
		if(i + j == 6 || i == j) { 
			xSum += num; 
		} if(j % 5 == 0) { 
			System.out.println(); 
		} 
	num++; 
	} 
} 
System.out.println("X의 합 = " + xSum);

int num = 1; 
int xSum = 0;

 

숫자를 1부터 출력하기 위해 num이라는 변수의 초기값을 1로 선언하였습니다.

또한 X영역의 합을 구하기 위하여 xSum이라는 변수를 선언하였습니다.

for(int i = 1; i <= 5; i++) { 
    for(int j = 1; j <= 5 ;j++) { 
        System.out.printf("%2d ", num); 
        if(i + j == 6 || i == j) { 
        	xSum += num; 
        } if(j % 5 == 0) { 
        	System.out.println(); 
        } 
        num++; 
    } 
}

여러 줄로 출력하기 위하여 다중 for 문을 사용하였습니다.

우선 i를 선언하여 반복문을 사용하는 영역과 j를 선언하여 사용되는 영역으로 나누어져 있습니다.

if(i + j == 6 || i == j) { 
	xSum += num; 
}

해당 부분의 조건은 출력된 숫자 중에서 X자 모양 영역이 되는 조건을 사용하였습니다. i와 j의 합이 6이거나 i와 j가 같다면 문제의 그림처럼 X자 모양의 영역이 나옵니다!

if(j % 5 == 0) { 
	System.out.println(); 
}

이 부분은 5칸마다 한 번씩 줄바꿈을 하기 위하여 사용된 조건과 명령입니다!

num++;

숫자를 1만 출력할 게 아니라 1부터 계속 출력할 거니까 계속 더해줘야겠죠??


//문제2. 
for(int i = 1; i <= 5; i++) { 
	for(int j = 1; j <= i; j++) { 
		System.out.printf("*"); 
	} 
	System.out.println(); 
}

 

i가 1부터 5까지 반복되는 for 문과 j가 1부터 i까지 반복되는 for 문이 있습니다.

i = 1일 때부터 5가 될 때까지 System.out.println()를 통해 총 5번 줄바꿈 합니다.

즉, i로 선언되어 반복되는 for 문에서 증감식이 수행될 때마다 줄바꿈을 한다고 이해하실 수 있습니다.

또한 j가 반복되는 만큼 *이 찍히게 됩니다.

i = 1 일 때

j = 1

i가 1일 때 j는 1까지 반복됩니다.

​

i = 2일 때

j = 1 / 2

i가 2일 때 j는 1부터 2까지 반복됩니다.

​

i = 3 일 때

j = 1 / 2 / 3

i가 3일 때 j는 1부터 3까지 반복됩니다.

​

i = 4 일 때

j = 1 / 2 / 3 / 4

i가 4일 때 j는 1부터 4까지 반복됩니다.

​

i = 5 일 때

j = 1 / 2 / 3 / 4 / 5

i가 5일 때 j는 1부터 5까지 반복됩니다.

​

따라서 해당 코드의 출력 결과는 문제 2번처럼 나오게 됩니다.


//문제3. 
for(int i = 1; i <= 5; i++) { 
	for(int j = 5; j >= i; j--) { 
		System.out.print("*"); 
	} 
	System.out.println(); 
}

위의 코드도 마찬가지입니다.

i = 1 일 때

j = 5 / 4 / 3 / 2 / 1

i가 1일 때 j는 5부터 시작해서 1까지 될 때까지 반복됩니다.

​

i = 2 일 때

j = 5 / 4 / 3 / 2

i가 2일 때 j는 5부터 시작해서 2가 될 때까지 반복됩니다.

​

i = 3 일 때

j = 5 / 4 / 3

i가 3일 때 j는 5부터 시작해서 3이 될 때까지 반복합니다.

​

i = 4 일 때

j = 5 / 4

i가 4일 때 j는 5와 4일 때 2번 반복됩니다.

​

i = 5 일 때

j = 5

i가 5일 때는 j가 1번 반복됩니다.


//문제4. 
for(int i = 5; i >= 0; i--) { 
    for(int j = i-1; j >= 0; j--) { 
    	System.out.print(" "); 
    } 
    for(int k = 1; k <= 5-i; k++) { 
    	System.out.print("*"); 
    } 
    System.out.println(); 
}

i = 5일 때

j = (i-1) = 4 / 3 / 2 / 1 ( 공백 이 4칸 출력됩니다 )

​

i = 4 일 때

j = 3 / 2 / 1

​

i = 3 일 때

j = 2 / 1

​

i = 2 일 때

j = 1

​

i = 1일 때는 공백이 출력되지 않습니다.


//문제5 
for(int i = 1; i <= 5; i++) { 
    for(int k = 0; k < i; k++) { 
    	System.out.print(" "); 
    } 
    for(int j = 5; j > i - 1; j--) { 
    //j=1;j<6-i;j++ 포문안에 이렇게 조건을 줘도 됩니다. 
    	System.out.print("*"); 
    } 
    System.out.println(); 
}

i 가 1일때 k(공백)은 0부터 i까지 즉 1까지 출력되며 k(*)은 5부터 i까지 즉 0까지 출력됩니다.

​

i = 1일때

k = 0

j = 5 / 4 / 3 / 2/ 1

i가 1일때 공백은 0 *은 5개가 출력이됩니다.

​

i = 2 일때

k = 1

j = 5 / 4 / 3 / 2

i가 2일때 공백은 1개 *은 4개가 출력이됩니다.

​

i = 3 일때

k = 1 / 2

j = 5 / 4 / 3

i가 3일때 공백은 2개 *은 3개가 출력이됩니다.

​

i = 4 일때

k = 1 / 2 / 3 / 4

j = 5 / 4

i가 4일때 공백은 3개 *은 2개가 출력이됩니다.

​

i = 5 일때

k = 1 / 2 / 3 / 4 / 5

j = 5

i가 5일때 공백은 4개 *은 1개가 출력이됩니다.


//문제6. 
for(int i = 1; i <= 5; i++) { 
    for(int k = 1; k <= 5-i; k++) { 
    	System.out.print(" "); 
    } 
    for(int j = 1; j <= i*2-1; j++) { 
    	System.out.print("*"); 
    } 
    System.out.println(); 
}

위의 코드는 i는 1부터 시작하며 5가 될때까지 반복합니다.

i는 줄바꿈을 위한 반복문이고 k는 공백을 출력하기 위한 반복문이며 j는 *을 출력하기 위한 반복문입니다.

i가 1일때 k는 1부터 4까지 반복이 되며 j는 i*2-1만큼 즉, 1부터 1까지 반복합니다.

i가 2일때는 k는 1부터 3까지 반복되고 j도 1부터 3까지 반복이 됩니다.

​

i = 1

k = 1 / 2 / 3 / 4

j = 1

​

i = 2

k = 1 / 2 / 3

j = 1 / 2 / 3

​

i = 3

k = 1 / 2

j = 1 / 2 / 3 / 4 / 5

​

i = 4

k = 1

j = 1 / 2 / 3 / 4 / 5 / 6 / 7

​

i = 5

k = 0

j = 1 / 2 / 3 / 4 / 5 / 6 / 7 / 8 / 9

728x90

'Java 관련 > Java' 카테고리의 다른 글

[Java] 배열(Array)  (0) 2021.10.18
[Java] Scanner()  (0) 2021.10.17
[Java] 제어문 - 반복문(for 문)  (0) 2021.10.11
[Java] 제어문 - 반복문(while 문)  (0) 2021.10.10
[Java] 제어문 - 조건문(switch 문)  (0) 2021.10.09
    'Java 관련/Java' 카테고리의 다른 글
    • [Java] 배열(Array)
    • [Java] Scanner()
    • [Java] 제어문 - 반복문(for 문)
    • [Java] 제어문 - 반복문(while 문)
    씨네
    씨네
    개발자 씨네가 공부하는 내용을 기록 겸 공유하는 블로그입니다!

    티스토리툴바