안녕하세요 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
저번에 배운 조건문과 오늘배운 반복문을 가지고 이렇게 응용해보았습니다.
다음번에는 연산자에 대해서 알아보도록 하겠습니다. (연산자부터 시작할거 그랬나봅니다.;;ㅎ)
감사합니다.
※궁금하신거 댓글달아주시길 바랍니다. ㅎㅎ
퍼가시는건 상관 없는데 말은 하고 퍼가주시길 바랍니다.^^※
'java' 카테고리의 다른 글
쉽지만 어려운 #Java #자바 #성공적 3.연산자 (0) | 2016.04.12 |
---|---|
쉽지만 어려운 #Java #자바 #성공적 2. 반복문(while)문 (0) | 2016.04.12 |
쉽지만 어려운 #Java #자바 #성공적 2.조건문(switch) (0) | 2016.04.04 |
쉽지만 어려운 #Java #자바 #성공적 2. 조건문(if) (0) | 2016.04.04 |
쉽지만 어려운 #Java #자바 #성공적1.객체값 다른 객체에서 자유롭게 사용하기 (0) | 2016.04.03 |