JAVA/Java 기초

반복문, while문 - Java 기초

john_ 2022. 12. 8. 09:48
728x90

while 문

while 문은 조건식을 검사한 후, 조건식이 참이면 반복하고 거짓이면 while 문을 벗어나게 됩니다.

while문의 조건식은 생략이 불가능합니다.

 

기본형식

while(조건식){
	//실행부
}

예시를 들어보겠습니다.

 시험점수(0~100)를 입력 받아 점수를 출력하고, 범위가 벗어날경우 입력란을 다시 실행시킨다.
package java1208;

import java.util.Scanner;

public class while1 {

	public static void main(String[] args) {
		int score;
		
		Scanner sc = new Scanner(System.in);
		
		System.out.print("시험 점수 (0~100사이의 정수)를 입력하세요: ");
		score = sc.nextInt();
		// 사용자가 유효한 시험 점수를 입력할때까지 계속 점수입력을 요청한다.
		
		while(score < 0 || score > 100) { // score가 해당 범위를 벗어났을 경우 while 문을 반복한다.
			System.out.println("범위를 벗어난 시험 점수가 입력되었습니다.");
			System.out.print("시험 점수 (0과 100사이의 정수)를 입력하세요: ");
			score = sc.nextInt();
		}
		System.out.println("시험점수: " + score);
		sc.close();
	}
}

해당 코드처럼 사용이 가능합니다.

 

 

do~while 문

while문의 변형으로 do~while이 있습니다.

do~while은 while 문과 달리 조건식이 후행에 배치되어 

문장을 한번 실행한후 검사하여 조건식의 참과 거짓을 판단합니다.

따라서 do~while 문은 반드시 한번은 수행이 됩니다.

 

기본형식

do{
	//실행되는 부분
} while(조건식);

 

예시를 들어보겠습니다.

 

상품들의 가격의 합이 100,000을 초과할때까지 상품가격들을 계속 읽어 들이는 프로그램을
생성하라.

코드는 다음과 같습니다.

 

package java1208;

import java.util.Scanner;

public class while2 {
	public static void main(String[] args) {
	
		Scanner sc = new Scanner(System.in);
		// 상품가격 들의 합이 100,000을 초과할 때 까지 상품 가격들을 계속 읽어 들이는 프로그램
		
		int price;
		int total;
		
		total = 0;
		
		do {
			System.out.print("구매한 상품의 가격을 입력하세요: ");
			price = sc.nextInt();
			
			total += price;
		} while(total <= 100000);
		
		// 합계를 출력
		System.out.println("총 구매 가격: " + total);
		sc.close();
	}
}

 


while 문의 예시를 몇가지 더 들어보겠습니다.

성적을 입력받아 학점을 출력하고, 과목수를 카운트 하는 프로그램을 만들어 보겠습니다.

코드는 다음과 같습니다.

 

package java1208;

import java.util.Scanner;

public class while2 {
	public static void main(String[] args) {
		// 90이상 A, 80이상 B, 70이상 C, 60이상 D, 60미만 F
		// 점수를 입력하세요(종료하려면 -1을 입력):
		
		Scanner sc = new Scanner(System.in);
		//scanner 객체를 가르키는 참조 변수
		
		int score;					// 입력 받는 점수
		int totalCount = 0;			// 몇 번 입
		int Acount = 0;				// A 학점 수
		int Bcount = 0;				// B 학점 수
		int Ccount = 0;				// C 학점 수
		int Dcount = 0;				// D 학점 수
		int Fcount = 0;				// F 학점 수
		
		//첫번째 점수를 입력받는다.
		System.out.print("점수를 입력하세요(종료하려면 -1을 입력): ");
		score = sc.nextInt();
		
		
		while ( score != -1 ) {
			// 점수가 양수일동안 다음 반복문을 계속한다.
			totalCount++;		//입력 값들을 누적
			
			if (score >= 90 ) Acount++; //점수에 해당하는 학점수를 1만큼 증가.
			else if (score >= 80) Bcount++;
			else if (score >= 70) Ccount++;
			else if (score >= 60) Dcount++;
			else Fcount++;
			
			System.out.print("점수를 입력하세요(종료하려면 -1을 입력): ");
			//다음 점수를 입력받는다.
			score = sc.nextInt();
		}
		
		//점수들의 총수, A 학점 수, B 학점 수, C 학점수, D 학점 수, F 학점 수
		System.out.println();
		System.out.println("점수들의 총수 = " + totalCount);
		System.out.println("A 학점 수 = " + Acount);
		System.out.println("B 학점 수 = " + Bcount);
		System.out.println("C 학점 수 = " + Ccount);
		System.out.println("D 학점 수 = " + Dcount);
		System.out.println("F 학점 수 = " + Fcount);
		sc.close();
	}
}

 

이런식으로 표현이 가능합니다.

728x90

'JAVA > Java 기초' 카테고리의 다른 글

Array, 다차원 배열 - Java 기초  (0) 2022.12.09
Array, 배열 - Java 기초  (0) 2022.12.09
반복문, for문 - Java 기초  (0) 2022.12.08
조건문, switch문  (0) 2022.12.08
java 연산자 우선순위  (0) 2022.12.07