카테고리 없음

조건문과 반복문 실습 3

달덩이>< 2022. 9. 14. 20:58

1. for 문

package p05.for_basic;

import java.util.Scanner;

// for (초기값; 조건식; 증감연산) { A }
// - 초기값과 마지막값이 결정되어 있는 경우에 많이 사용

public class ForBasic {

	public static void main(String[] args) {
		int sum = 0;
		Scanner input = new Scanner(System.in);
		
//		for (int i=0; i<=10; i++) {
//		System.out.println("Java씨, 존경합니다.");
//	}
	
//		System.out.println("1부터 시작하여 합계를 구할 최종 숫자를 입력하세요.");
		System.out.println("합계를 구할 최종 숫자를 입력하세요.");
		int startNumber = input.nextInt();
		int lastNumber = input.nextInt();
	
	
		for (int number=startNumber; number <= lastNumber; number++) {
			sum += number;
		}
	
		System.out.println(startNumber + " ~ " + lastNumber + "의 합= " + sum);
	}

}

 

  • for 문은 입력된 값을 반복해주는 명령이다.
  • 위 코딩은 우리가 입력한 첫번째 값과 마지막 값 사이에 있는 값들을 모두 더해주는 반복문이다.
  • 먼저 우리가 직접 값을 입력하기 위해 Scanner를 사용해준다.
  • 그 다음 첫번째 값에는 starNumber라는 변수를 마지막 값에는 lastNumber라는 변수를 만들어 준다.
  • 그리고 for을 이용해서 첫번째 값부터 마지막 값이 나올 때까지 계속 반복해주는 반복문을 만들어 준다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다. (첫번재 입력한 숫자는 1 마지막 입력한 숫자는 10이므로 1부터 10을 순차적으로 더하면 55라는 값이 나오게된다.)



2. for 문 2 (구구단 출력하기)

package p05.for_basic;

// 중첩 for문: for문 안에 for문이 있는 경우
// 9*9 단 coding

public class ForBasic2 {

	public static void main(String[] args) {
		System.out.println("구구단은 다음과 같습니다.");
		
		for (int dan=2; dan<=9; dan++) {
			System.out.println(dan + "단 출력값");
			for (int num=1; num<=9; num++) {
				System.out.println(dan + " * " + num + " = " + (dan*num));
			}
			System.out.println();
		}

	}

}

 

  • 위에 코딩은 구구단을 출력하는 코딩이다. 구구단은 2단부터 9단까지 출력한다.
  • 먼저 for 문을 이용해서 첫번째 시작값을 2단이니 2로 주고, 마지막 값은 9단이므로 9로 해준다.
  • for (int dan =2; dan <= 9; dan++)라는 코딩은 구구단이 몇단인지 알려주는 코딩이다
  • 그 다음 한번 더 for 문을 사용해서 구구단의 뒷자리 수를 나오는 코딩을 해준다 (예를 들어 2 * 1 = 2라는 결과에서 뒤에 1, 2, 3...9를 출력해주는 코딩이다)
  • 그리고 print를 이용하여 (dan  + " * " + num + "=" + (dan*num))을 해주면  2단부터 9단까지의 구구단이 출력된다.
  • 여기서, dan은 첫번째 for문이고, num은 두번째 for문이다

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



3. for 문 3 (3개의 중첩 for문)

package p05.for_basic;

// 3개의 중첩 for문
// - 전체 실행 횟수 : 3개 이상의 중첩 for문을 사용하면 프로그램 실행 속도를 크게 저하시킬 수 있어 실무적으로는 가급적 사용하지 말 것
// -예 : 10*10*10 => 1000번
// -예 : 10000*10000*10000 => 1,000,000,000,000번
// - 어쩔 수 없이 사용해야만 한다면 반드시 전체 반복 횟수를 확인하고 사용할 것

public class ForBasic3 {

	public static void main(String[] args) {

		for (int i=1; i<10; i++) {
			for (int j=1; j<10; j++) {
				for (int k=1; k<10; k++) {
					System.out.println("3개의 숫자의 곱 = " + (i*j*k));
				}
			}
		}
//		for (int i=1; i<10000; i++) {
//			for (int j=1; j<10000; j++) {
//				for (int k=1; k<10000; k++) {
//					System.out.println("3개의 숫자의 곱= " + (i*j*k));
//				}
//			}
//		}

	}

}

 

  • 3개의 for 문은 실행속도가 저하될 수 있기때문에 실무에서는 가급적 쓰지않는다.
  • 위의 코드는 1부터 9까지의 3개의 숫자를 다 곱하는 형식의 코드이다.
  • Ex) 1*1*1 =1, 2*1*1 = 2 .....9*9*9 = 729

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



4. for 문 안에 while 문 있는 경우

package p06.hybrid_repeat;

public class HybridRepeatEx {

	public static void main(String[] args) {

		for (int i=0; i<5; i++) {
			int j=0;
			while (j <i) {
				System.out.print(j + " ");
				j++;
				
			}
			// print + ln(line, enter key 역할)
			System.out.println();
		}
	}

}

 

  • 이번 코드는 for 문을 이용해서 i를 반복시켜 주고, 그 다음 while 문을 써서 조건식으로 만들어주는 코딩이다.
  • 먼저 j는 0부터 시작이고 i도 0부터 시작이여서 처음에는 아무것도 안나온다.
  • 그 밑에는 i는 for 문 때문에 1증가해서 1이고 j는 0이므로 0이 출력되고, 다시 for 문으로 돌아간다.
  • 이런 과정이 i가 5가 될때까지 반복하고 5가 되는 순간 종료하게 된다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



5. while 문 안에 for 문이 있는 경우 

package p06.hybrid_repeat;

// while문 안에 for문이 있는 경우
public class HybridRepeatEx2 {
	public static void main(String[] args) {
		int i = 0;
		
		while (i<5) {
			for (int j=i; j>1; j--) {
				System.out.print(j + " ");
			}
			System.out.println("***********");
			i++;
		}
	}

 

  • 이번 코드는 위에 코드와 다르게 while 문 안에 for 문이 있는경우이다.
  • 먼저 while 문으로 i가 5미만이면 true라는 식을 만들어준다.
  • 그 다음 for 문으로 j가 i라고 해주는 반복문을 만들어준다.
  • 처음에는 j가 0이기때문에 false여서 "****************"것 만 나오게 되고, 두번째도 j가 1인데 1을 초과하지 못해서 같은 값이 나오게 된다.
  • 세번째 반복에서는 j가 2여서 2는 출력되고 그 뒤는 *이 출력되게 된다.
  • 네번째는 j가 3이여서 3 2가 출력되고 그 뒤는 *이 출력되는 방식으로 다섯번째까지 출력이 된다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



6. do ~ while 문 안에 for 문이 있는 경우

package p06.hybrid_repeat;

// do~while문 안에 for문 사용
public class HybridRepeatEx4 {

	public static void main(String[] args) {
		int i = 1;
		
		do {
			int num = 1;
			for (int j=1; j<=i; j++) {
				System.out.print(num + "G");
				num += 2;  // num = num  + 2;
			}
			System.out.println();
			i++;
		} while (i<=5);
	}

}

 

  • 이번에는 do ~ while 문 안에 for 문이 있는 경우이다.
  • 먼저 do 안에 for 문을 넣어 반복문을 만들고 do 밖에 while을 써서 조건식을 만들어준다.
  • for 문은 j가 1부터 true이면 2씩 증가하는 반복문이다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



7. break 문(랜덤으로 나오는 번호가  6이 나올 때까지 반복하고 6이 나오면 종료하는 코딩)

package p07.break_continue;

public class BreakEx {

	public static void main(String[] args) {
		int num = 0;
		
		while (num != 6) {
			num = (int) (Math.random()*6) +1;  // 1, 2, 3, 4, 5, 6
			System.out.println("주사위번호 = " + num);
			if (num == 6) {  // 조건식 역할
				break;
			}
		}

		System.out.println("주사위 게임 종료");
        }
    }

 

  • 이번 코딩은 랜덤으로 숫자가 나오게 하고 그 숫자가 6이 나올때까지 계속 반복하되, 6이 나오면 종료하는 코딩이다.
  • 먼저 while 문을 써서 num이 6이 아니면 true가 되도록 만들어주고, 랜덤으로 숫자가 나와야해서 Math.random을 써준다.
  • 그리고 if 문을 써서 num이 6이 나오면 break 문을 써서 종료시킨다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



8. break 문 2

package p07.break_continue;

import java.util.Scanner;

// -1을 입력받으면 while문을 빠져나오는 프로그램
public class BreakEx2 {

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int num = 0;
		
		while (true) {
			if (in.nextInt() == -1) {
				break;
			}
			num++;
		}
		System.out.println("입력된 숫자 개수는 " + num);
	}

}

 

  • 위 코드는 내가 입력한 숫자의 갯수를 세어주는 코딩이다.
  • 먼저 우리가 직접 숫자를 입력해야하기 때문에 Scanner를 사용해준다.
  • 그리고 -1을 입력하면 while 문을 빠져나오게 해준다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



9. continue 문

package p07.break_continue;

public class ContinueEx {

	public static void main(String[] args) {
		int sum = 0;
		
		// 1~10사이의 짝수의 합
		for (int i=1; i<=10; i++) {
			if (i%2 !=0) {  // 홀수의 경우
				continue;
			}
			sum += i;
			
		}
		
		System.out.println("1~10사이의 짝수의 합= " +sum);

	}

}

 

  • continue는 break와 반대로 계속 진행하라는 명령어이다.
  • 위 코드는 for 문과 if 문을 이용하여 1부터 10까지 홀수의 합만 구하는 코딩이다.
  • for 문에는 10까지 반복하는 조건문을 만들어주고, if 문에는 %를 이용해서 홀수의 값을 구해준다.

위 사진은 위 코딩의 결과를 Console 창에 나타낸 것이다.



오늘은 조건문과 반복문에 대한 3번째 실습을 하였습니다. 조건문과 반복문은 앞으로 코딩을 할 때도 많이 사용되므로 많이 사용해서 손에 익혀두는 것이 좋습니다. 아직 저도 익숙하지는 않지만 좀 더 복습하여 익숙해지도록 해보겠습니다. 다음에는 몇가지 퀴즈로 조건문과 반복문을 실습해보겠습니다.^^

반응형