본문 바로가기

자바 JAVA

while문 이용 예제풀이 - 자바 기초

반복제어문에는 for문과 while문이 있다.

 

while문은 다시 while문과 do while문으로 나눌 수 있다.

 

do while은 조건문이 true인지 false인지 상관없이 { }괄호 안의 명령을 한번 실행하고,

그 후에 조건문을 판별하여 true인 동안 반복한다.

do
{
	반복 실행할 문장;
}while(조건문);

 

while은 조건문이 true일 경우만 { }괄호 안의 명령을 실행하고 반복한다.

while(조건문)
{
	반복 실행할 문장;
}

 

항상 참이 되는 조건문 1==1이나 true를 사용하면 while반복문을 무한루프로 사용할 수 있다.

while(true)
{
	반복 실행할 문장;
}

 


  문제) while문을 이용한 프로그램 

출력예) 1
            2
            ...
           10

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		int i=1 ;

		while(i<=10)
		{
			System.out.println(i++);
		}
	}
}

 문제) 알파벳 'A'부터 'Z'까지 출력하는 프로그램 작성 

출력예) ABCDEFGHIJKLMNOPQRSTUVWXYZ

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		char a = 'A';

		while(a<='Z')
		{
			System.out.print(a++);
		}
	}
}

 문제) 정수 변수 num을 선언하여 1을 대입한 후

1씩 증가시키면서 10까지의 누적 합을 구하는 프로그램

while문을 이용하여 작성하고

1부터 10까지의 합과 while문이 끝난 후의 num의 값을 출력하는 프로그램 

출력예) 1부터 10까지의 합 = 55
          while문이 끝난 후의 num의 값 = 11

 

package sample;

public class Sample
{
	public static void main(String[] args)
	{
		int num = 1, sum = 0;
        
        while(num<=10)
		{
			sum += num;
			num++;
		}

		System.out.println("1부터 10까지의 합 = " + sum);
		System.out.print("while문이 끝난 후 num의 값 = " +num);
	}
}

 문제) 점수를 입력받아 80점 이상이면 합격메시지를

그렇지 않으면 불합격 메시지를 출력하는 작업을 반복하다가

0에서 100점 이외의 점수가 입력되면 종료하는 프로그램 

입,출력예)  점수를 입력하세요. : 50
               죄송합니다. 불합격입니다.
               점수를 입력하세요. : 95
               축하합니다. 합격입니다.
               점수를 입력하세요. : 101

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{

		while(true)
		{
			Scanner scn = new Scanner(System.in);
			System.out.print("점수를 입력하세요. : ");
			int scr = scn.nextInt();

			if( scn < 0 || scn > 100)
			{
				break;
			}
			else if( scn>=80)
			{
				System.out.println("축하합니다. 합격입니다.");
			}
			else
			{
				System.out.println("죄송합니다. 불합격입니다.");
			}
		}
        
	}
}

 문제) 정수를 계속 입력받다가 0이 입력되면

0을 제외하고 이전에 입력된 자료의 수와 합계, 평균을 출력하는 프로그램을 작성

(평균은 소수 둘째자리까지 출력) 

입력예) 15 88 97 0
출력예) 입력된 자료의 개수 = 3
          입력된 자료의 합계 = 200
          입력된 자료의 평균 = 66.67

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		int num, cnt = 0, sum = 0;

		while(true)
		{
			num = scn.nextInt();

			if(num==0)
			{
				break;
			}

			sum += num;
			cnt++;
		}

		System.out.println("입력된 자료의 개수 = " + cnt);
		System.out.println("입력된 자료의 합계 = " + sum);
		System.out.printf("입력된 자료의 평균 = %.2f", sum/(double)cnt);
	}
}

 문제) 정수를 계속 입력 받다가 0이 입력되면

입력된 수 중 홀수의 합과 평균을 출력하는 프로그램 (평균은 정수) 

입력예) 5 8 17 6 31 0
출력예) 홀수의 합 = 53
          홀수의 평균 = 17

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		int num, sum = 0, cnt = 0;

		while(true)
		{
			num = scn.nextInt();

			if(num == 0)
			{
				break;
			}

			if(num%2!=0)
			{
				cnt++;
				sum += num;
			}
		}

		System.out.println("홀수의 합 = " + sum);
		System.out.print("홀수의 평균 = " + sum/cnt);
	}
}

 문제) 아래와 같이 메시지를 출력하고

숫자를 입력받아 선택한 번호에 해당하는 메시지를 출력하는 작업을 반복하다가

4가 입력되면 메시지 출력후 종료하는 프로그램 작성

(1~4 이외의 숫자가 입력되면 "잘못 선택하였습니다." 라고 출력) 

입,출력예)
1. 입력하기
2. 출력하기
3. 삭제하기
4. 끝내기
작업할 번호를 선택하세요. : 2

출력하기를 선택하였습니다.

1. 입력하기
2. 출력하기
3. 삭제하기
4. 끝내기
작업할 번호를 선택하세요. : 5
 
잘못 선택하였습니다.

1. 입력하기
2. 출력하기
3. 삭제하기
4. 끝내기
작업할 번호를 선택하세요. : 4

 

끝내기를 선택하였습니다.

 

package sample;
import java.util.*;

public class Sample
{
	public static void main(String[] args)
	{
		Scanner scn = new Scanner(System.in);
		int num;
		String menu = "";

		do
		{
			System.out.println("1.입력하기");
			System.out.println("2.출력하기");
			System.out.println("3.삭제하기");
			System.out.println("4.끝내기");
			System.out.print("작업할 번호를 선택하세요.: ");
			num = scn.nextInt();

			if(num < 1 || num > 3)
			{
				if( num == 4)
				{
					break;
				}
				menu = "잘못";
			}
			else
			{
				if(num == 1)
				{
					menu = "입력하기를";
				}
				else if(num == 2)
				{
					menu = "출력하기를";
				}
				else if(num == 3)
				{
					menu = "삭제하기를";
				}
			}
			System.out.printf("\n%s 선택하였습니다.\n\n", menu);

		}while(num != 4);

		System.out.print("\n끝내기를 선택하였습니다.");
	}