본문 바로가기
Back-End/Java

[Java] 반복문 while, do while

by 찐코딩 2021. 8. 8.

반복문

  - 반복해서 실행할 때 사용하는 문장.
  - 반복문의 종류 : while문, do~while문, for문
    

while 반복문

  - 조건식을 비교하여 참인 경우 게속해서 반복 실행문을 실행하고,
     조건식이 거짓인 경우에는 반복문을 빠져 나가는 문장.
  - while 반복문은 반복문의 횟수를 알 수 없는 경우에 많이 사용됨.
     반복문에는 반드시 조기식, 조건식, 증감식이 존재해야 함.
   
형식)

while(조건식) {
	반복 실행문;    //조건식 연산결과가 참(true)인 동안, 반복될 문장
}

 

do~while 반복문

  - while문과 반대로, 블럭{}을 먼저 수행한 후에(반복 실행문을 실행하고) 조건식을 비교함

 

형식)

do {
  반복 실행문;  //조건식 연산결과가 참일 때 수행될 문장 기재
} while (조건식);   //반드시 끝에 ';'을 잊지 않도록 주의

예제

01) while 반복문을 이용하여 1~10까지 출력하기

public class Ex15 {

	public static void main(String[] args) {
	// while 반복문을 이용하여 1~10까지 출력해보자.
	int num=1;  //반복문에서의 초기식
	while (num<=10) {  //반복문에서의 조건식과 증감식을 합침
		System.out.println("num>>>"+num); 
		num++;
	}
	System.out.println();
	
	//do while 문을 이용하여 1부터 10까지 출력해보자. 
	int num1=1; //초기식
	do {
		System.out.println("num1>>>"+num1);
	}while(num1++<=10); //조건식과 증감식
	}
	
}


02) ABCDEFGHIJKLMNOP....XYZ까지 알파벳을 출력해보자

또, 거꾸로도 출력해보자

public class Ex17 {

	public static void main(String[] args) {
		
		//ABCDEFGHIJKLMNOP....XYZ까지 문제를 출력해 보자.
		char alpha = 'A';
		while (alpha<='Z') {
			System.out.print(alpha);
			alpha++;
		}
		System.out.println();

		
		// 거꾸로 입력하고 싶을 때는? 
		char alpha1 = 'Z';
		while(alpha1>='A') {
			System.out.print(alpha1);
			alpha1--;
		}
	}
}

 


03) 1부터 100까지의 홀수의 합과 짝수의 합을 구해보자

public class Ex18 {

	// 1부터 100까지의 홀수의 합과 짝수의 합을 구해보자
    
	public static void main(String[] args) {
    
		int su=1; //반복문에서의 초기식
        
		// 홀수의 합 변수, 짝수의 합 변수
		int odd=0, even=0;
        
		while(su<=100) {
			if(su%2==1) {
				odd=odd+su;
			}else {
				even=even+su;
			}
			su++;
		}
        
		System.out.println("1부터 100까지의 홀수의 합은 " + odd +"입니다.");
		System.out.println("1부터 100까지의 짝수의 합은 " + even +"입니다.");
	}
}

while문과 if else문을 중첩하여 문제를 풀었다.

 


04) 화면을 통해 정수를 입력받고, 그 수만큼 별(*)이 출력되도록 해보자.

import java.util.Scanner;

public class Ex20 {

	public static void main(String[] args) {
    
		Scanner sc=new Scanner(System.in);
        
		System.out.print("별의 최대 갯수를 입력하세요>>> ");
		int starCount=sc.nextInt();
        
		System.out.println();
        
		if(starCount>0) {
			int count=1;
			while(count<=starCount) {
				System.out.print("*");
				count++;
			}
		}
		sc.close();
	}
}

 


05) 1~100 사이의 정수 중에서 키보드로 5개의 정수를 입력 받아서 5개의 정수 중에서 최대값을 화면에 출력해보자.

import java.util.Scanner;

public class Ex21 {

	public static void main(String[] args) {
    
		Scanner sc=new Scanner(System.in);
        
		int max=0; //최대값 변수
        
		int temp, su=1;
        
		System.out.println("1부터 100까지 정수 중에서 무작위로 5개의 정수를 입력하시오.");
        
		while (su<=5) {    //5개의 정수를 입력하므로, 5번까지 반복
			System.out.print(su+"번쨰 정수 입력: ");
			temp=sc.nextInt();
				if(temp>max) {
					max=temp;
				}
			su++;
		}
        
		System.out.println("최대값>>>"+max);
		sc.close();
	}
}

먼저 temp에 화면에 입력받은 값을 저장하고, (임시로 값을 저장하는 곳이라고 보면 된다.)

새로 값을 부여받은 temp를 max라는 최대값 변수(초기값:0)와 비교한다.

temp 값이 max 값을 초과할 때 temp 값을 max에 부여,

max값이 최대값이 되면 if문을 벗어나게 되어

결과적으로 max값이 입력받은 temp값 중 최대값을 가지게 된다.

어쨋든 if문의 조건문(temp>max)의 참/거짓과는 상관없이 temp값과 max값을 비교하는 작업은 5번을 반복한다. (su++<=5)


06) 

숫자 맞추기 게임

컴퓨터가 임의로 설정한 정수값을 맞춰보는 게임을 만들어보자

 

import java.util.Scanner;

public class Ex22 {

	public static void main(String[] args) {
    
		Scanner sc=new Scanner(System.in);
        
		System.out.println("숫자 맞추기 게임");
        
        // 랜덤으로 정수값 저장하기
		int num=(int)(Math.random()*99)+1;
        
		System.out.println("1부터 99까지의 숫자 중에서 하나의 숫자를 맞추세요.");
        
		int count=0; //몇 번 안에 맞추는지 카운트하는 변수
		int no=0; //키보드로 입력 받은 내가 선택한 숫자
        
		while(no!=num) {
			System.out.print("어떤 숫자일까요? >>> ");
			no=sc.nextInt();
			
			if(no>num) {
				System.out.println("더 작은 숫자입니다.");
			}else if(no<num) {
				System.out.println("더 큰 숫자입니다.");
			}
			System.out.println("::::::::::::::::::");
			count++;
		}
        
		System.out.println("축하합니다. 정답입니다.");
		System.out.println("정답은 "+num+"이었습니다.");
		System.out.println("정답 소요 횟수는 "+count+"입니다.");
		
		sc.close();
	}
}

math.random함수를 써서 임의로 값 정하기

math.random함수는 0 이상 1 미만의 double값을 반환하기 때문에 반드시 자료형 변환 작업을 해야함.

 

실행하면

 

 

'Back-End > Java' 카테고리의 다른 글

[Java] 기타보조제어문(continue, break)  (0) 2021.08.11
[Java] 조건문 for문  (0) 2021.08.08
[Java] 조건문 switch~case문  (0) 2021.08.08
[Java] 조건문 if-else문, if-else if문  (0) 2021.08.08
[Java] 조건문 if문  (0) 2021.08.08

댓글