DAY+5 for문을 활용한 별찍기(중첩반복문)
2020. 8. 17. 01:03ㆍWeb_Back-end/JAVA_선행
※중첩반복문 : 반복문 안에 다른 반복문이 실행되는 것 (외부반복문 + 내부반복문)
☆ 주의점 : 각 반복문을 제어하는 변수는 달라야함
중첩반복문을 이해할 수 있는 for문을 활용한 별찍기
예제 1) 일반 삼각형출력하기
//5줄짜리 삼각형 별찍기
//삼각형의 줄 수를 변수 x로 선언하여 사용하면 줄 수 변경이 편리함
int x=5;
for(int i=0; i<x; i++) {
for(int j=0; j<x-i-1; j++) {
System.out.print(" ");
}
for(int j=0; j<2*i+1; j++) {
System.out.print("*");
}
System.out.println("");
}
▽ Console 창 출력예시-5줄 삼각형
더보기

5줄 삼각형

예제 2) 사용자에게 삼각형 값을 받아서 출력하기
//사용자에게 삼각형 값을 받아서 출력하기
Scanner input=new Scanner(System.in);
System.out.println("삼각형의 줄 수를 입력하시오.");
int x=input.nextInt();
for(int i=0; i<x; i++) {
for(int j=0; j<x-i-1; j++) {
System.out.print(" ");
}
for(int j=0; j<2*i+1; j++){
System.out.print("*");
}
System.out.println("");
}
▽ Console 창 출력예시-사용자+삼각형
더보기

6줄의 삼각형출력

예제 3) 일반 마름모 출력하기
//5줄 짜리 마름모를 출력(줄수를 f로 선언하여 변경이 용이하게 함)
int f=5;
for(int i=0; i<(f-1)/2; i++) {
for(int j=0; j<(f-1)/2-i; j++) {
System.out.print(" ");
}
for(int j=0; j<2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
for(int i=0; i<1; i++) {
for(int j=0; j<f; j++) {
System.out.print("*");
}
System.out.println();
}
for(int i=0; i<(f-1)/2; i++) {
for(int j=0; j<i+1; j++) {
System.out.print(" ");
}
for(int j=0; j<(f-2)-(2*i); j++) {
System.out.print("*");
}
System.out.println();
}
▽ Console 창 출력예시-마름모(3,5,9줄)
더보기

f=3 일때

f=5 일때

f=9 일때



예제 4) 사용자에게 마름모 값을 받아서 출력하기
//사용자에게 마름모 값을 받아서 출력하기
/*
단락을 나눠서 1,2,3파트로 나누어 풀었음
만약 사용자값이 5일경우 출력(0은 공백을 의미함)
00*
0***
***** <- 가운데 *갯수와 사용자 값이 같음 이걸기준으로 위,아래 파트를 나눔
0***
00*
*/
Scanner input=new Scanner(System.in);
System.out.println("홀수를 입력하시오.");
int x=input.nextInt();//x는 사용자가 넣는 값
//첫번째 단락 i는 x값에서 -1(가운데 중심라인) 나누기 2(위,아래단락 두개기때문)
for(int i=0; i<(x-1)/2; i++) {
//공백은 좌우로 봤을때 x값에서 별하나가 들어온 것을 뺀 만큼 생기기 때문에
//좌우를 반으로 나눠서 왼쪽값만 표기함=>(x-1)/2-i
//-i를 하는 이유는 아래로 내려갈 수록 i만큼 공백이 줄어들기 때문
for(int j=0; j<((x-1)/2-i); j++) {
System.out.print(" ");
}
//별의 갯수는 1부터 시작해서 2만큼 증가함
//i가 0부터 시작하기 때문에 2*i+1 을 사용했음
for(int j=0; j<2*i+1; j++) {
System.out.print("*");
}
System.out.println();
}
//중심되는 단락(x값과 *의 갯수가 같음)
for(int i=0; i<1; i++) {
for(int j=0; j<x; j++) {
System.out.print("*");
}
System.out.println();
}
//마지막 단락 i는 x값에서 -1(가운데 중심라인) 나누기 2(위,아래단락 두개기때문)
for(int i=0; i<(x-1)/2; i++) {
//공백은 하나씩 늘어가기 때문에 i값에 +1
for(int j=0; j<i+1; j++) {
System.out.print(" ");
}
//별개수의 시작은 x값보다 2만큼 적게 시작하고
//아래로 갈수록 갯수 자체가 2개씩 양옆으로 줄기 때문에 2곱하기 i만큼 빼준다
for(int j=0; j<(x-2)-(2*i); j++) {
System.out.print("*");
}
System.out.println();
}
▽ Console 창 출력예시-사용자+마름모
더보기

7줄의 마름모 출력

'Web_Back-end > JAVA_선행' 카테고리의 다른 글
DAY+7 배열(단어 기본정리)/for-each, 복사, 난수, 2차원배열 (1) | 2020.08.30 |
---|---|
DAY+6 배열(기본, 특징) (1) | 2020.08.28 |
DAY+4 선택과 반복(조건문, 반복문), 난수 생성 (0) | 2020.08.16 |
DAY+3 형변환 / 입력과 출력 (0) | 2020.08.15 |
DAY+2 변수와 자료형 / 연산자 (0) | 2020.08.15 |