본문 바로가기

카테고리 없음

조건문과 반복문 실습 2

1. while 문

package p03.while_basic;

// 1. while, do~while, for: 특정 명령어 집합을 반복적으로 수행하고자 할 때 사용하는 command
//  예) 수능 50만명 성적처리
// 2. while (boolean) { A; } => boolean이 true인 동안에 A 명령어를 반복 수행
//  - 초기값과 while문 조건식을 꼼꼼히 살펴볼 필요 있음

public class WhileBasic {

	public static void main(String[] args) {

//		System.out.println("Java씨, 존경합니다.");
//		System.out.println("Java씨, 존경합니다.");
//		System.out.println("Java씨, 존경합니다.");
//		System.out.println("Java씨, 존경합니다.");
	//	System.out.println("Java씨, 존경합니다.");
		
		// 반복문 초기화
		int count = 0;
		// 조건식 : count < 10;
		while (count < 10) {
			System.out.println("Java씨, 존경합니다.");
			count++;    //while문 조건식 결과를 false로 만들어 줄 수 있음
		}
		System.out.println();
				
		count = 1;
		while ( count <= 10); {
			System.out.println("Java씨, 존경합니다.");
			count++;    
		}

	
		System.out.println();
		int endValue = 10;
		while (count <= endValue); {
			System.out.println("Java씨, 존경합니다.");
			count++;
		}
	}

}

 

  • while 문의 경우 조건에 따라 반복을 계속할지 결정할 때 사용한다.
  •  int count가 0이라는 값을 가지고 while ( count < 10) 이라는 조건이므로 조건은 true가 되어 10번 반복하게 된다.

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



2. while 문 2 (1에서 10까지의 합 구하기)

package p03.while_basic;

public class WhileBasic2 {

	public static void main(String[] args) {
		int sum = 0;
		int number = 1;
		
		while (number <= 10) {
			sum += number;  // sum = sum + number; => sum = 0 + 1 + 2 + 3 + ... + 10
			number++;
		}
		
		System.out.println("1 ~ 10까지의 합 = " + sum);

	}

}

 

  1. 먼저 sum, number라는 변수에 0과 1이라는 값을 넣어준다.
  2. while 문을 사용하여 number가 10이 될때까지 반복해주는 조건을 만들어준다.
  3. 그 다음 sum += number를 해서 1부터 2,3,4....10까지의 값들을 더해준다.
  4. (참고로, sum += number라는 뜻은 sum = sum + number와 같은 뜻이다.)

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



3. while 문 3 (짝수의 합과 홀수의 합 구하기)

package p03.while_basic;

public class WhileBasic3 {

	public static void main(String[] args) {
		int sum = 0;
		int number = 1;
		
		// 1 ~ 10사이의 짝수의 합 (2+4+6+8+10)
		while (number <= 10) {
			if ( (number % 2) == 0) {
				sum += number;
				System.out.println("sum = " +sum);
			}
			number++;
		}
		
		System.out.println("1~10사이의 짝수의 합 :" + sum);
		
		number = 1;
		sum = 0;
		while (number <= 10) {
			if ( (number % 2) == 1) {
				sum += number;
			}
			number++;
		}
		System.out.println("1~10사이의 홀수의 합 : " +sum);
	}

}

 

  1. 여기서도 먼저 sum, number라는 변수에 0과 1이라는 값을 넣어준다.
  2. 그 다음 while 문을 이용하여 우리가 구하고 싶은 1에서 10까지라는 것을 반복해야하니 while (number <=10)이라는 조건식을 만들어준다.
  3. 여기서 짝수의 합만 구하고 싶으니 if 문을 사용해준다.
  4. if 문에는 number를 %2를 해준다. %는 나머지를 구하는 연산자이기 때문에 여기서 %2를 해서 0이 나오면 짝수라는 뜻이다.
  5. 그 다음은 sum += number를 해주면 1에서 10까지 짝수의 합이 나오게 된다.
  6. (System.out.println("sum = " + sum); 은 sum이 어떻게 증가하는지 보기위해서 사용하였다.)
  7. 홀수는 위에 했던거를 똑같이 하되, if 문에서 %2를 해서 1이 나오면 홀수라는 뜻이기에 if ((number%2) == 1)를 해준다.

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



4. while 문 QUIZ ( 0 ~ 9 사이의 random의 숫자를 받아 덧셈결과를 입력하시오.)

package p03.while_practice;

import java.util.Scanner;

// 0~9사이의 2개의 random number 숫자를 생성하여 합계(덧셈 결과)를 만든 후
// 사용자로부터 console에서 덧셈 결과를 입력받아 내부적으로 생성한 덧셈결과와 일치할 때까지 while 수행

public class RepeatAdditionQuiz {

	public static void main(String[] args) {
		int number1 = (int) (Math.random()*10);
		int number2 = (int) (Math.random()*10);
		
		Scanner input = new Scanner(System.in);
		System.out.println(number1 + "과" + number2 + "의 합계는?");
		
		int answer = input.nextInt();
		
		// while 내부 수행 조건 : 정답이 틀릴 경우에만 while문이 반복 수행
		while ( (number1 +number2) != answer) {
			System.out.println("정답이 아닙니다. 다시 시도해 보세요.");
			System.out.println(number1 + "과" + number2 + "의 합계는");
			answer = input.nextInt();
			
		}
		
		System.out.println("예, 정답입니다. 잘 맞추셨습니다.");
		
		
		

	}

}

 

  1. 먼저 random의 숫자를 받아야하므로 Math.random을 사용해준다.
  2. 우리가 직접 답을 입력해줘야하니 Scanner도 사용해준다.
  3. 그 다음 답이 맞으면 끝나고 답이 틀리면 맞출때까지 반복해야 하므로 while 문을 이용해준다.
  4. whlie 문의 조건식은 random으로 숫자를 받는 number1과 number2의 합이 우리가 입력한 숫자와 일치하지 않을때가 true가 되도록 만들어준다.
  5. 즉, while ( (number1 + number2) != answer)  이라는 식으로 만들어주면 된다. 여기서 !=은 not이라는 뜻이기 때문에 쓰는 것이다.
  6. 이렇게 만들어주면 우리가 입력한 값(answer)가 number1과 number2의 합이랑 같지 않을 때 true가 되고 "정답이 아닙니다. 다시 시도해 주세요"라는 문구와 다시 답을 입력할 수 있도록 나온다.

위 사진은 위에 코딩의 결과를 Console 창에 나타낸 것이다. (여기서 random으로 나온 두 수의 합을 우리가 오답을 입력했을 때는 계속 반복되고 정답을 입력했을때는 반복이 끝나는 것을 볼 수 있다.)



5. do ~ while 문

package p04.dowhile_basic;

// do ~ while : do ~ while문 내부 명령어를 무조건 1번은 실행
// - do { A; } while(조건식)  => 조건식이 true인 동안에 A를 반복 실행
// - 참고 : while문은 내부 명령어는 한번도 실행 안할수도 있음

public class DoWhileBasic {

	public static void main(String[] args) {
		int count = 0;
		
		do {
			System.out.println("Java씨, 존경합니다.");
			count++;
		} while (count < 10);
		
		count = 0;
		do {
			System.out.println("Java씨, 매우매우 존경합니다.");
		} while (count > 10);
		
		while (count > 10) {
			System.out.println("Java씨, 너무너무 존경합니다.");
			count++;
		}
	}

}

 

  • do ~ while 문의 경우는 while문과 비슷하지만 먼저 do를 써준다.
  • do 안에는 실행문을 넣어주고 그 다음 while 문을 써서  while문의 조건문이 true이면 do 안에 있는 실행문이 실행되게 된다.
  • 위에 코딩도 do 안에 있는 "Java씨, 존경합니다."라는 실행문이 10번 반복하고, 11번째는 "Java씨, 매우매우 존경합니다."라는 실행문이 실행되게 된다.

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



6. do ~ while 문 2

package p04.dowhile_basic;

import java.util.Scanner;

// do ~ while문을 사용하는데 대표적인 case : 자판기처럼 메뉴판을 보여주고 외부에서 선택하고 종료하는 경우를 조건식에 두는 경우
public class DoWhileBasic2 {

	public static void main(String[] args) {
		int sum = 0;
		int input_number;
		
		Scanner input = new Scanner(System.in);
		
		do {
		System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
			input_number =input.nextInt();
			sum += input_number;
		}while (input_number != 0);
		
		System.out.println("sum = " + sum);
	
//		System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
//		input_number =input.nextInt();
//		while (input_number != 0) {
//			sum += input_number;
//			System.out.println("덧셈할 숫자를 입력하세요. 단, 입력한 숫자가 0이면 종료합니다.");
//			input_number =input.nextInt();
//		}
//
//		System.out.println("sum = " + sum);
	}

}

 

  1. 이번 코딩은 숫자를 입력하고 enter 키를 누르면 다시 숫자를 입력할 수 있게 되고, 0을 누르면 그동안 입력했던 숫자들이 모두 더해지고 종료되는 코딩이다.
  2. 우리가 숫자를 입력해야하니 Scanner를 사용해준다.
  3. 그리고 do ~ while 문을 써서 실행될 문장을 만들어준다.
  4. do에는 실행문을 넣어주고, while 문에는 조건식이 0이 되면 프로그램이 종료되니까 입력된 숫자 != 0이 라는 식을 만들어 0이 아니면 계속 반복할 수 있게 만들어준다.

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



7. do ~ while 문 3

package p04.dowhile_basic;

public class DoWhileBasic3 {

	public static void main(String[] args) {
		char a = 'a';
		
		do {
			System.out.print(a);
			a = (char) (a + 1);
			
		} while (a <= 'z');
		
		System.out.println();
		
		a = 'A';
		do {
			System.out.print(a);
			a = (char) (a + 1);
			
		} while (a <= 'Z');

	}

}

 

  • 이번 코딩은 a부터 z까지 알파벳을 소문자와 대문자로 나열하는 코딩이다.
  • 먼저 char a라는 변수에 a를 할당해주고 do ~ while 문을 사용해준다.
  • do에는 a부터 계속 한글자씩 높아지는 실행문을 써주고, while에는 a가 z보다 이하일때 true라는 식을 만들어준다. 그러면 a는 z까 될때까지 반복할 것이다.
  • 대문자는 a = 'A'라고 해주고 위에 코딩과 같게 해주면 된다.

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



8. do ~ while 문 QUIZ ( 0 ~ 9 사이의 random의 숫자를 받아 덧셈결과를 입력하시오.)

package p04.dowhile_practice;

import java.util.Scanner;

public class RepeatAdditionQuiz {

	public static void main(String[] args) {
		int number1 = (int) (Math.random()*10);
		int number2 = (int) (Math.random()*10);
		
		Scanner input = new Scanner(System.in);
		
		int answer = Integer.MAX_VALUE; // 정수 최대값 초기화
		
		do {
			System.out.println(number1 + "과" + number2 + "의 합계는");
			answer = input.nextInt();
			if ( (number1 + number2) != answer) {
				System.out.println("정답이 아닙니다. 다시 시도해 보세요.");
			}
		} while ( (number1 + number2) != answer);
		System.out.println("정답입니다. 잘 맞추셨습니다.");
	}

}

 

  • 이 문제는 위에 while 문을 써서 0 ~ 9 사이의 random 의 숫자를 받아 정답을 입력하는 문제였다
  • 이 문제를 do ~ while문을 써서 푼 코딩이 위에 코딩이다.

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



오늘은 조건문과 반복문 실습에서 while, do ~ while 문에 대한 실습을 해보았습니다. 다음에는 반복문인 for 문에 대한 실습을 해보도록 하겠습니다.

반응형