ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ch4 자바 반복문] while문 알아보기
    프로그래밍 언어/JAVA 2022. 6. 8. 15:11
    while문

    for문에 비해 while문은 구조가 간단하다. if문처럼 조건식과 블럭{}만으로 이루어져있다. 다만 if문과 달리 while문은 조건식이 '참(true)'인 동안', 즉 조건식이 거짓이 될 때까지 블럭{} 내의 문장을 반복한다.

    while (조건식) {
    //조건식의 연산결과가 참(true)인 동안, 반복될 문장들을 적는다.
    }

    while문은 먼저 조건식을 평가해서 조건식이 거짓이면 문장 전체를 벗어나고, 참이면 블럭 {} 내의 문장을 수행하고 다시 조건식으로 돌아간다. 조건식이 거짓이 될 때까지 이 과정이 계속 반복되는 것

     

     

    for문과 while문 비교

    1부터 10까지의 정수를 순서대로 출력하는 for문을 while문으로 변경하면 다음과 같다.

    위의 두 코드는 완전히 동일하다. 그래서 for문과 while문은 항상 서로 변환이 가능하다. 

     

    while문 예제

    ※ 예제 1번 ※

    package ch4;
    
    public class Ex4_9 {
    
    	public static void main(String[] args) {
    		
    		int i = 5;
    		while(i-- !=0) { //후위연산자이기에 조건식이 평가된 후에 i의 값이 감소
    			System.out.println(i);
    		}
    	}
    }

    예제 1번 출력 값

    주석에 나와있듯이 i--가 후위형이므로 조건식으로 먼저 판별이 난 다음에 감소된다.

    이말은즉슨 while 조건식 안에서 i--값이 5, 4, 3, 2, 1 5번 반복된다는 것. 그러나 블럭 안에 i의 값으로 호출될 때는 4~0으로 출력된다는 것. 다른점을 알아두자. 

     

     

     

    ※ 예제 2번 ※

    1부터 몇까지 더해야 100을 넘지 않는지 알아보는 예제

    package ch4;
    
    public class Ex4_9 {
    
    	public static void main(String[] args) {
    		
    		int i=0;
    		int sum=0;
    		while(sum <=100) {
    			System.out.println(i + " - " +sum);
    			sum+=++i;
    		}
    	}
    }

    예제 2번 출력 값

     

     

    ※ 예제 3번 ※

     

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_9 {
    
    	public static void main(String[] args) {
    		
    		Scanner sc = new Scanner(System.in);
    		System.out.println("숫자를 입력하세요(ex.1234) > ");
    		//int input = sc.nextInt();
    		//num = Integer.parseInt(input);
    		int num = sc.nextInt();
    		int sum = 0;
    		
    		while(num!=0) {
    			sum += num%10;//마지막 자리의 숫자값을 누적해서 더한다.
    			System.out.println("sum="+sum+" num="+num);
    			num /= 10;//int형이기에 소숫점은 사라져 정수만 남게 된다.
    		}
    	}
    }

    예제 3번 출력 값

     

     

    do-while문

    do-while문은 while문의 변형으로 기본적인 구조는 while문과 같으나 조건식과 블럭{} 의 순서를 바꿔놓은 것이다. 따라서 while문과 반대로 블럭{}을 먼저 수행한 후에 조건식을 평가하기 때문에 무조건 1번은 블럭 안의 내용이 수행될 것을 보장한다. 

     

    do{
     //조건식의 연산결과가 참일 때 수행될 문장들을 적는다. (처음 한 번은 무조건 실행)
    } while (조건식); //맨끝에 ' ; ' 를 잊지 않도록 주의

     

    ※ 예제 4번 ※

    숫자 맞추기 게임

    package ch4;
    
    import java.util.Scanner;
    
    public class Ex4_15 {
    
    	public static void main(String[] args) {
    		
    		//int answer = 23;
    		int answer = (int)(Math.random()*100)+1;//1~100 사이의 임의의 수를 저장
    		int input=0;
    		Scanner sc = new Scanner(System.in);
    		do {
    		System.out.printf("1과 100사이의 정수를 입력하세요. > ");
    		input = sc.nextInt();
    		if(input<answer) {
    			System.out.println("더 큰 값으로 입력해보세요");
    		}else if(input>answer) {
    			System.out.println("더 작은 값으로 입력해보세요.");
    		}
    		}while(input != answer);//조건식이 true일 경우 반복문 실행
    		System.out.println("축하합니다. 정답입니다!!");
    		sc.close();
    
    	}
    
    }

    예제 4번 출력 값

    1~100까지 Math.random()을 이용해서 정수 난수를 추출 후 answer값에 저장한 다음에  answer과 사용자가 입력한 값이 같은 경우에 반복문을 탈출하는 코드이다. answer보다 사용자가 입력한 값이 크거나 작은 경우에 따라 hint 메시지를 전달함으로써 숫자 맞추기 게임을 구현할 수 있다.

    반응형

    댓글

Designed by Tistory.