while

Chae Yun·2021년 7월 25일
0

■반복문의 개요■

주어진 조건이 참인 경우 일정 영역의 문장들을 반복 수행
조건식이 거짓이 되는 순간이 오면 반복 수행을 중단

🍎반복문 : while, do~whild,for문 등이 있다
🍎제어문 : break, continue문

📒while문

조건식을 먼저 비교하여 조건식의 처리 결과과 참인 경우, 특정 영역을 반복 수행하는 문장으로
반복횟수가 정해져 있지 않은 경우나 반복횟수가 많은 경우 주로 사용한다
(조건이 맞지 않은 경우 반복은 커녕 단 한 번도 실행되지 않을 수 있다.)

●1~100까지의 누적합

public class Test039
{
	public static void main(String[] args)
	{
		/*
		int n=0;
		while (n<=10)
		{
			System.out.println("n="+n);
			n++;
		}
		*/

		/*
		int n=0;
		while (n<=10)
		{
			n++;
			System.out.println("n="+n);
		}
		*/
		
		/*
		int n=0;
		while (n++<=10) //1씩 더한 수가 10이 될때까지
		{
			System.out.println("n="+n);
		}
		*/

		/*
		int n=0;
		while (n++<=10)
		{
			System.out.println("n="+ ++n);
		}
		*/

		//실행 예)
		//1부터 100까지의 합 : 5050
		//계속 하려면 아무 키나 누르세요...
		//System.out.println("1 부터 100까지의 합 :5050");

		//1부터 차례로 담아 1씩 증가하는 변수 선언 및 초기화
		int n=1;
		//누적합을 계산하여 담아낼 변수 선언 및 초기화
		int sum=0;
		
		//연산 및 처리
		while (n<=100)
		{
			//sum을 n만큼 증가시켜라
			sum +=n;
			//n이 1씩 증가해나가는 연산 필요
			n++;
		
		}
		//결과출력	
		System.out.println("1부터 100까지의 합 : " +sum);
		//출력 구분이 반복문 영역 안에 있으면 출력이 100번 되는거라, 반복문 밖에 있어야 해
		//1부터 1씩 증가할 변수와 누적된 합을 담을 변수가 필요해
 
	}
}

●1~100가지의 다양한 누적합

public class Test042
{
	public static void main(String[] args)
	{
		//주요 변수 선언
		int n=1, sum, even, odd;
		sum=even=odd=0; //0으로 초기화

		//연산 및 처리
		while(n<=100)
		{
			//정수합 처리
			sum+=n;
			//짝/홀수합 처리
			if(n%2==0)
			{
				even+=n;
			}
			else if(n%2!=0)
			{
				odd+=n;
			}
			else
			{
				System.out.println("판별불가 데이터");
			}
			//나머지 처리
			n++;

		}
		//결과 출력
		System.out.println("1부터 100까지 정수의 합 : "+sum);
		System.out.println("1부터 100까지 짝수의 합 : "+even);
		System.out.println("1부터 100까지 홀수의 합 : "+odd);


	}
}

●10의 배수마다 누적합 출력

실행 예)
1~10까지의 합 : xx
1~20까지의 합 : xxx
1~30까지의 합 : xxx
	:
1~100까지의 합 : 5050
계속하려면 아무 키나 누르세요..
*/

public class Test043
{
	public static void main(String[] args)
	{
		int n=1, sum=0;
		while(n<100)
		{
		sum+=n;
		if(n%10==0)
			{
			System.out.printf("1~%d까지의 합 : %d\n",n, sum);
			}
			n++;
		}
	}
}

●1/2+2/3+3/4+....+9/10 출력

public class Test044
{
	public static void main(String[] args)
	{
		int n=0;
		double sum=0;

		//반복문 구문
		while(n<9)    // 0 1 2 3 4 5 6 7 8
		{
			//증감식 구성
			//최종적으로 반복문의 조건을 무너뜨리는 열쇠가 된다
			n++; //시작과 동시에 1 더해서 대입 // 1 2 3 4 5 6 7 8 9
			sum+=(double)n/(n+1); //실수 기반 연산 수행 처리를 위해  피연산자 중 하나를 실수 형태로 만들어주는 것이 중요하다
		}
		System.out.print("연산 결과 : %f\n" +sum);
	
	}
}

●1x2x3...x9x10 출력

public class Test045
{
	public static void main(String[] args)
	{
		
		//int n=0,result=0;
		int n=0,result=1; //누적 곱은 1로 초기화 해야한다 0아님
		while(n<10)
		{
			n++;
			result*=n;

		}
	
	System.out.println("연산 결과 : " +result);
	}
}
public class Test045
{
	public static void main(String[] args)
	{
		
		//int n=0,result=0;
		int n=0,result=1; //누적 곱은 1로 초기화 해야한다 0아님
		while(n<10)
		{
			n++;
			result*=n;

		}
	
	System.out.println("연산 결과 : " +result);
	}
}

●소수판별

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class Test046
{
	public static void main(String[] args) throws IOException
	{
		
		// ○ 주요 변수 선언

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int num;		//-- 사용자로부터 값을 입력 받을 변수
		int count=2;		//-- 소수를 확인하기 위해 사용할 변수
		String result="소수 아님";
		
		// ○ 연산 및 처리

		System.out.print("임의의 정수 입력: ");
		num = Integer.parseInt(br.readLine());

		/*
		while(count<num)
		{
			if(num%count ==0) // 나누어 떨어지면 소수 아님(==0 나머지가 0)
			
			{
				result="소수 아님";	
				break;
			}
			else
			{
				result="소수";
				count++;
			}
		}
		*/

		boolean flag= true; // 소수다!!
		while(count<num)
		{
			if(num%count ==0)
			{
				flag=false; // 앗 소수가 아니네ㅠ
				break;
			}
			num++;
		}
		// ○ 결과 출력전에 한번 더 확인(1인지 아닌지에 대한 추가 검토)
		if (flag && num!=1) //flag 자체가 true이거나 flase니까 flag=true 이런식으로 쓸 필요 없다
			System.out.printf("%d →소수\n",num);
		
		else
			System.out.printf("%d →소수 아님\n",num);	
		

	}
}

●입력받은 두 정수 정렬 후, 사이값 합 구하기

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;


public class Test047
{
	public static void main(String[] args)throws IOException
	{

		//○주요 변수 선언

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int su1,su2;    //첫 번째, 두 번째 입력값을 담을 변수
		int n;			//루프(반복) 변수로 활용할 변수
		int result=0;

		//○연산 및 처리
		
		System.out.print("첫 번째 정수 입력 : ");
		su1=Integer.parseInt(br.readLine());
		
		System.out.print("두 번째 정수 입력 : ");
		su2=Integer.parseInt(br.readLine());
		
		//입력받은 두 수의 크기 비교와 자리 바꾸기
		if(su1>su2) 
		{	
			//a와b 자리 바꾸기
			su1=su1^su2;
			su2=su2^su1;
			su1=su1^su2;
		}

		//반복 연산 수행
		//반복 연산을 수행하기 전에 
		//작은 수를 따로 저장해서 루프 변수로 활용해야한다
		n=su1; //위의 위치바꾸는걸 통해서 su1에 작은 수가 위치하게 만들었어

		while(n<=su2)
		{
			result +=n;
			n++;
		}

		//○결과 출력
		System.out.printf(">>%d~%d 까지의 합 : %d\n", su1,su2,result); 
	
	}

}

●입력받은 두 정수 정렬 후, 사이값 합 구하기(홀수/짝수)

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Test048

{
	public static void main(String[] args) throws IOException

	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		
		// ○변수 선언		
		int num, sum, even, odd;			
		int i=1;
		sum=even=odd=0;
		// ○ 연산 및 처리
		System.out.print("임의의 정수 입력 : ");
		num = Integer.parseInt(br.readLine()); //사용자의 입력값 변환

		
		while (i <= num)		//--임의의 숫자까지 반복문
		{
			sum +=i;			//--임의의수 합
			
			if(i%2==0)			//짝수
			{
				even +=i;		
			}
			else if(i%2!=0)		//홀수
			{
				odd +=i;		
			}
			
			i++;
		}

		//○결과 출력

		System.out.printf("\n>> 1 ~ %d 까지 정수의 합 : %d", num, sum);
		System.out.printf("\n>> 1 ~ %d 까지 짝수의 합 : %d", num, even);
		System.out.printf("\n>> 1 ~ %d 까지 홀수의 합 : %d\n", num, odd);
	}
}

0개의 댓글