국비지원수업

JAVA/자바[6일차](1)-while문,do-while문

둥구는 지굴다 2022. 10. 27. 20:25

while

while문은 for문과 마찬가지로 반복문의 한 종류이며

조건식이 참 일동 안 명령을 반복하는 기능을 갖고 있습니다.

while문의 구조

while(조건식){
	반복할명령;
증감식;
}

 

while문 사용하는 방법

1.while문은 for문과는 다르게 조건식에 사용할 변수를 조건식 밖에서 선언해주어야 합니다.

while(int i==0) { //조건식안에 변수선언 불가!
			
		 }

 

2.while문의 조건식 안에 변수의 범위를 설정해 줍니다.

i <5; i≤10과 같은 범위를 설정해 주지 않는다면 while문은 무한반복으로 실행하게 됩니다.

3. 사용자가 원하는 명령을 { } 블록 안에 작성해줍니다.

4. 변수의 값을 변화할 증감식을 작성해 줍니다.

증감식을 작성하지 않으면 이 또한 무한반복에 들어갑니다.

while문 예시

while문을 사용하여 간단한 출력문을 출력해보죠

public static void main(String[] args) {
		int i=0;
		while(i<10) {
			System.out.println("안녕하세요 나는"+i+" 번째 while문이에요");
			i++;
		}
	}

출력 결과

while문 예시_2

아스키코드 중 기호만을 출력하려 합니다.

그런데 기호를 출력할 때 10개의 기호당 줄 바꿈을 띄우게 할 것입니다.

public static void main(String[] args){
char u=' ';	//문자를 출력할 char형 변수 선언
		int i=0; //while문에 사용할 변수 선언
		int j=('~'-' '+1); //아스키코드에서 기호가 몇개있는지 계산하여 대입
		while(i<j) { //i는j미만일 때 까지 while문반복
			System.out.print((char)(u+i++)+" "); //정수형을 char형으로 형변환
			if(i%10==0)System.out.println(); //10줄마다 줄바꿈을 위해 10의 배수 당 줄바꿈 실행
		
		}
}

while문 예시_3

이번에는 은행 출금, 예금, 잔고확인, 종료 기능이 있는 프로램을 만들어보려 합니다.

프로그램은 사용자의 종료가 있기 전까지 계속 실행되어야 합니다.

public static void main(String[] args) {
			//연습문제 : 가상은행의 예금/출금/잔고조회 실행
			Scanner sc= new Scanner(System.in);
			boolean run=true; //반복을 제어할 변수
			int sel; //선택 사항 저장
			int balance=12000; //현재 잔고(잔액)
			
			while(run) { //현재 while의 조건식에 true값이 들어감에 따라 while문 무한반복
				int money;
				//사용자에게 보여질 화면
				System.out.println("---------------------------------");
				System.out.println("1.예금 | 2.출금 | 3.잔고 확인 | 4. 종료");
				System.out.println("---------------------------------");
				System.out.print("메뉴 선택:");
				sel=sc.nextInt(); //사용자에게 입력 받기
					
				 switch(sel) { //switch문으로 사용자의 입력 번호 비교
				 case 1: //예금처리
					  System.out.print("예금액:");
					  money=sc.nextInt();
					  balance+=money;
					  System.out.println("고객님의 잔액은"+balance+"원 입니다.");
					  break;
				 case 2: //출금 처리(출금 금액 입력) 
					 	//**잔액보다 많은 금액은 출금할 수 없으니 조건식으로 처리**
					 System.out.print("출금액:");
					 money=sc.nextInt();
					 //조건식 
					 if(balance<money) { //출금액이 통잔 잔고보다 클 경우
						 System.out.println("잔액이 부족합니다.");
						 
					 }else { 
						 balance-=money; //balance= balance-money
						 System.out.println("현재 고객님의 잔액"+balance+"원 입니다.");
								 
					 }
					 break;
				 case 3: 	//잔고(balance) 출력
					 		System.out.println("현재 잔고:"+balance+"원 입니다.");
					 		System.out.println();
					 		break;
				 case 4:
					 System.out.println("프로그램을 종료합니다.");
					 run=false; //while의 조건식을 false로 바꾸어 줌으로써 while문 종료
					 break;
				default : 
					System.out.println("잘못된 선택입니다. 값은 1~4만 입력해주세요");
				 }//switch문 끝
			} //while문 끝	}

	}

위 예시는 경우의 수가 많기에 모든 실행결과를 보여드릴 수 없기에 case 2번만 보여드리겠습니다.

2번 입력 결과(잔고보다 출금액이 많을 때)

추가적으로 잔고의 기본 값은 12000입니다.

do-while문

do-while문은 while문과 똑같지만 한 가지 다른 점이 하나 있습니다.

do-while문은 조건식이 true이든 false이든 일단 실행문을 무조건 한번 실행하고 조건식을 실행하게 됩니다. 약간의 순서가 다른 것이지요

do-while문 구조

do{
실행문}
while(조건식)

do-while문 에시

public static void main(String[] args) {
		do {
			System.out.println("무조건 한번 실행하는 do");
		}while(false);
		//출력 결과:무조건 한번 실행하는 do
	}

위의 예시처럼 while문의 조건은 false이기에 실행이 안되야하지만 do-while문은 do { } 안에 있는 실행문을 실행 한 뒤 조건식을 보는 형태입니다.


이상으로 글 마쳐보겠습니다.

글 읽어주셔서 감사합니다.