뚜벅이 한걸음

반복문을 이용하여 별 찍기 본문

java

반복문을 이용하여 별 찍기

뚜벅뚜벅뚜벅이 2022. 7. 9. 20:19
반응형

반복문을 배웠는데 블로그에 공부한것을 매일 적으려니 시간이 안난다..!

일단 결과부터 보면 이렇게 삼각형을 찍을 수있다.

아직 중첩으로반복문을 사용해본건 구구단뿐인데 구구단은 숫자라 그런가 이해가 잘갔는데 삼각형만들기는 너무 힘들었다.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

이런 모양으로 만들거니까

줄은 공백세개, 별하나, 공백세개의 순서

두번째줄은 공백 두개, 별세개, 공백두개

세번째줄은 공백하나, 별다섯개, 공백하나

마지막줄은 공백없이 별만 일곱개의 순서

다음줄로 넘어갈때를 보면 공백은 하나씩 줄고 별은 두개씩 늘어난다는 것을 알 수 있다.

그럼 작성해보기~!

public class Triangle {

public static void main(String[] args) {
int line =4;
int star =1;
int space = line/2+1; 
}

여기까지 일단 첫줄부터 만들거니까 line은 4줄까지 있으니까 4, 별은 첫줄에1개로 시작, 공백은 첫줄일때 3개 두번째줄이면 2개 이런식으로 줄어가니까 lin2/2+1.

for문으로 일단 줄을 반복하도록 만들어준다

 

int line =4;
int star =1;
int space = line/2+1;

for(int i=0;i<line;i++) {
//줄반복 
}

for 반복문(외부)안에 int i =0; 이라는 변수를 선언해주고 변수 i가 line보다 작으면 그안에 있는 중첩문을 반복하도록할것이다. line=4;로 선언해 두었으니

line=4; 일때 i=0으로 한줄만들고 i++되서 i=1되서 두번째줄,,,

이런식으로 i가 0,1,2,3 각각 한줄이 만들어 질것이다.


 

중첩된 반복문을 쓸때는 순서가 중요하다 내가 쓴 순서대로 나오기 때문이다.

첫번째 내부 반복문에서는 이제 별을 기준으로 왼쪽에 있는 공백을 3개만들것이다.

int line =4;
int star =1;
int space = line/2+1;

for(int i=0;i<line;i++) {//줄바꿈
for(int j=0;j<space;j++) {//왼쪽 공백
System.out.print(" "); 
} 
}

for 문안에 int j=0;으로 j라는 새로운 변수 선언.

j 가 우리가 미리 선언해둔 space보다 작으면 system.out.print(" ") 을 하도록한다.

주의할 것은 system.out.println(" ")이 아니라 system.out.print(" ")이다.

println은 line을 바꾸는 것이기때문에 우리는 한줄에 공백 세개를찍는 것이므로 그냥print라고 쓴다.

j=0; 일때 space=line/2+1; 보다 작으므로 공백 1개. 그 다음은 j++

j=1; 일때 space=line/2+1; 보다 작으므로 공백 또 1개 더 그다음은 j++

j=2; 일때 space=line/2+1; 보다 작으므로 공백 또 1개 더 그다음은 j++

j=3; 일때 space=line/2+1; 과 값이 같아지므로 반복문을 빠져나온다.

따라서 j 값이 0,1,2 일때 공백을 찍었으므로 공백 3개

그다음은

int line =4;
int star =1;
int space = line/2+1;

for(int i=0;i<line;i++) { //줄반복
for(int j=0;j<space;j++) {//왼쪽 공백
System.out.print(" ");
} for(int j=0;j<star;j++) {//별
System.out.print("*"); 
}
}

두번째 내부 반복문으로 별을 찍어준다. 다시 j변수를 초기화해서 j 가 star보다 작으면 별을 출력하고 j++이 된다.

star=1;이므로 j=0;일때만 성립한다. 따라서 별 1개를 출력하고 반복문을 빠져나간다.

int line =4;
int star =1;
int space = line/2+1;

for(int i=0;i<line;i++) {
for(int j=0;j<space;j++) {//왼쪽 공백
System.out.print(" "); 
} for(int j=0;j<star;j++) { //별
System.out.print("*"); 
} for(int j=0;j<space;j++) { //오른쪽 공백
System.out.print(" "); 
} 
}

세번째 내부 반복문은 오른쪽 공백을 찍어줄것이다. 다시 j를 0으로 초기화해서 j 가 space보다 적을때까지 반복한다. 그럼 왼쪽에 찍은것과 똑같이 공백이 세개 나온다.

int line =4;
int star =1;
int space = line/2+1;

for(int i=0;i<line;i++) { //왼쪽 공백
for(int j=0;j<space;j++) {
System.out.print(" ");
} for(int j=0;j<star;j++) { 
System.out.print("*"); }
for(int j=0;j<space;j++) {
System.out.print(" "); 
} space-=1; star+=2;
System.out.println(); 
}

마지막으로 한줄을 그렇게 완성하고 나면, 우리가 그 다음줄은 공백이 양쪽으로 하나씩 줄고 별은 두개 늘어나게 해야한다고 했다.

따라서

space-=1;

star+=2;

를 선언하고

System.out.println()으로 줄을 바꿔준다.(다음줄로 내려가기)

그럼 다시 첫번째 반복문으로 돌아가서 이 과정을 반복하고

삼각형을 출력하게 된다.

삼각형 출력 끝~

반응형

'java' 카테고리의 다른 글

클래스와 객체  (0) 2022.07.10
메쏘드 ,method  (0) 2022.07.10
조건문  (0) 2022.07.09
비트 연산자  (0) 2022.07.09
기본 연산자(2)  (0) 2022.07.09