java

쉽지만 어려운 #Java #자바 #성공적 2.반복문(for) + 별표 피라미드

sieunju 2016. 4. 7. 03:13
반응형

안녕하세요 J.sieun 입니다. 


반복문에 대해서 배우도록 하겠습니다.


우선 반복문과 저번에 배운 조건문은 자바에서 아주 많이 쓰이는 문법 입니다. 사실 배우는건 쉽습니다. 하지만 이


것을 잘 해놔야 나중에 응용 문제나 자기가 원하는 프로그램 만들때 잘 컨트롤 할수있습니다. 이점 유의하시길 바


랍니다. ㅎㅎ


우선 for 문입니다. 


for(초기화;조건;증가량)


이식이 가장 기본적인 식이고,


for(변수: 배열)


이식은 향상된 for문이라고 배열을 사용할떄 좀더 간편하게 쓸수 있는 식입니다. 


아래 소스를 보겠습니다. 




public class forClass {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i = 0; i<5; i++ )

{

System.out.println(i);

}

int arr[] = {2,1,3,4,5};

for(int i: arr)

{

System.out.println(i);

}

}


}


for문의 기본적인 식과 향상된 for문을 적어보았습니다. 


결과 값은

//기본적인 for문 부분

0

1

2

3

4

//향상된 for문 부분

2

1

3

4

5


음..이부분은 딱히 해석을 하기엔..그냥 한번 보시면 어떻게 결과값이 나오는지 알게됩니다. 


그럼 다음 소스를 보겠습니다. 


public class forClass {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i=0; i<5; i++)

{

for(int j=0; j<=i; j++)

{

System.out.print("☆");

}

System.out.println();

}

}

}


결과값은


☆☆

☆☆☆

☆☆☆☆

☆☆☆☆☆


이런식으로 나옵니다. 해석하자면 


1. i 값이 0인 상태에서 두번째 for문안으로 들어갑니다. 

2. i 값이 0이고 j값도 0인 상태라서 ☆ 를 한번만 출력합니다.(System.out.print 이거 뜻은 줄바꿈을 안한다는 뜻입니다. )

3. 두번째 for문이 완료 되었으므로 나옵니다. 

4. 나오자마자 System.out.println() 을 출력합니다. (줄바꿈입니다.)

5. 이것을 5번 사이클 돕니다. 그러면 위에 값처럼 별표가 하나씩 증가하게 됩니다.


이것을 좀더 응용하면 ☆ 피라미드를 만들수 있습니다. 


아래 소스를 보시면


public class forClass {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i=0; i<10; i++)

{

for(int j=0; j<=10-i; j++)

{

System.out.print("   ");

}

for(int k=0; k<=2*i; k++)

{

System.out.print("☆");

}

System.out.println();

}

}

}


결과 값은 






두번째 for문에서 띄어쓰기 3번해야 좀 이쁘게 나오네요ㅎㅎ;


해석하자면


1. 첫번째 for문 i 값이 0인상태로 두번째 포문 들어갑니다. 


2. 두번쨰 for문에서 j값이 0부터 10이하 까지 1씩증가하는 for문을 가지게됩니다. 그리고 출력은 띄어쓰기 3칸합니다. 그래서 총 30번 띄어쓰기를 하고 세번째 for문으로 들어갑니다. 


3. 세번째 for문은 k값이 0부터 0이하 까지 1씩증가하는 for문을 가지게 됩니다. (한번 돌때마다 k값의 범위는 짝수형식으로 늘어납니다. 즉, 1, 3  5 7 9 이런식으로 반복합니다. 


4. 그리고 별표를 출력합니다. 


5. 마지막 세번쨰 for문까지 끝나고 나옵니다. 


6. System.out.println(); 에 의해서 줄바꿈을 합니다. 


7. 이 순서로 10번 반복합니다. 



음..이해하기 어려우실텐데 천천히 종이에 적어가면서 해석하다보면 이해하기 쉽습니다. 


다음은 좀더 응용한 피라미드입니다. 



public class forClass {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i=0; i<10; i++)

{

for(int j=0; j<=10-i; j++)

{

System.out.print("   ");

}

for(int k=0; k<=2*i; k++)

{

if(k == 0 || 2*i == k)

{

System.out.print("☆");

}

else

System.out.print("   ");

}

System.out.println();

if(i==9)

{

System.out.print(" ");

for(int f=0; f<15; f++)

{

System.out.print(" ☆");

}

}

}

}

}


결과 값은




이렇게 속이 텅빈 삼각형이 만들어졌습니다. 


음..해석하자면 좀 복잡하긴한데..이부분은 여러분이 한번 해석해보시길 바랍니다 :D 


(저얼대 귀찮아서 그런것이 아닙니다. )


아래는 각각 for문 별로 변수값을 출력한 값입니다.


두번째 for문 :띄띄띄띄띄띄 세번째 for문 :k값 :0 i값 :0

두번째 for문 :띄띄띄띄띄 세번째 for문 :k값 :0 i값 :1띄k값 :2 i값 :1

두번째 for문 :띄띄띄띄 세번째 for문 :k값 :0 i값 :2띄띄띄k값 :4 i값 :2

두번째 for문 :띄띄띄 세번째 for문 :k값 :0 i값 :3띄띄띄띄띄k값 :6 i값 :3

두번째 for문 :띄띄 세번째 for문 :k값 :0 i값 :4띄띄띄띄띄띄띄k값 :8 i값 :4



10번까지 출력하기엔 너무 복잡하고 더러워보여서 5번만 출력했습니다. 


참고로 띄 라고 표현한건 띄어쓰기 부분이라는 뜻입니다. ㅎㅎ


마지막으로 좀더 응용한 모양입니다. 



public class forClass {


public static void main(String[] args) {

// TODO Auto-generated method stub

for(int i=0; i<10; i++)

{

for(int j=0; j<=10-i; j++)

{

System.out.print("   ");

}

for(int k=0; k<=2*i; k++)

{

if(k == 0 || 2*i == k)

{

System.out.print("☆");

}

else if(i == 5 && k<9)

{

System.out.print("★");

}

else if(i >5  && k == 2 )

{

for(k= 1; k<2*i-10; k++)

{

System.out.print("☆");

}

for(k = i-3; k<=10-(i-5); k++)

{

System.out.print("★");

}

for(k= 8; k<2*i-3; k++)

{

System.out.print("☆");

}

}

else if(k != 0 && i <5)

{

System.out.print("   ");

}

}

System.out.println();

}

}

}


결과값은





이런식으로 나옵니다. 


해석은...알아서..저도 그냥 해본거라 소스를 막적고 검토 안해서 아마 중복되는것이 있을것 입니다. 


그걸 여러분이 찾는게 재미있을거 같습니다. :D


저번에 배운 조건문과 오늘배운 반복문을 가지고 이렇게 응용해보았습니다. 


다음번에는 연산자에 대해서 알아보도록 하겠습니다. (연산자부터 시작할거 그랬나봅니다.;;ㅎ)


감사합니다. 


※궁금하신거 댓글달아주시길 바랍니다. ㅎㅎ


퍼가시는건 상관 없는데 말은 하고 퍼가주시길 바랍니다.^^※


반응형