본문 바로가기

📚Study Note/JAVA

[ JAVA ] if ~ else 문 ①

/*====================================
 ■■■  실행 흐름의 컨트롤 (제어문) ■■■
 - if ~ else문 실습
 =====================================*/

사용자로부터 임의의 연도를 입력받아
입력받은 연도가 윤년인지 , 평년인지 판별하여
결과를 출력하는 프로그램을 구현한다.
단, if ~ else 조건문을 활용할 수 있도록 한다.

//실행 예)
// 임의의 연도 입력 : 2020
// >> 2020 → 윤년
// 계속하려면 아무 키나

// 임의의 연도 입력 : 2021
// >> 2021 → 평년
// 계속하려면 아무 키나...

※윤년의 판별 조건

🔵 연도가 4의 배수이면서 100의 배수가 아니거나 ( year%4==0  &&  year%100 !=0 )

🔵 또는, 400의 배수이면 윤년! ( || year%400==0)

🔵 그렇지 않으면 평년!

 

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

public class Test033
{
	public static void main(String[] args) throws IOException
	{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		
		int year;
		String strResult;


		System.out.print("임의의 연도 입력 : ");
		year = Integer.parseInt(br.readLine());

		if (year%4==0 && year%100!=0 || year%400==0)
		{
			System.out.printf("%d → 윤년\n", year);
		}
		
		else
		{
			System.out.printf("%d → 평년\n", year);
		}
	}
}
/*
[실행결과]
임의의 연도 입력 : 2020
2020 → 윤년
계속하려면 아무 키나 누르십시오 . . .


임의의 연도 입력 : 2021
2021 → 평년
계속하려면 아무 키나 누르십시오 . . .
*/

 

 

/*====================================
 ■■■  실행 흐름의 컨트롤 (제어문) ■■■
 - if ~ else문 실습
 =====================================*/

 //사용자로부터 임의의 두 정수와 연산자를 입력받아
 // 해당 연산자에 해당하는 연산의 처리 결과를 출력하는 프로그램을 구현한다.
 // 연산의 결과는 편의상 정수 형태로 처리될 수 있도록 한다.

 //실행 예)
 // 첫 번째 정수 입력 : 10
 // 두 번째 정수 입력 : 24
 // 연산자 입력(+ - * /) : 

 // >> 10 + 24 = 34
 // 계속하려면 아무 키나...

 

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

public class Test034
{
	public static void main(String[] args) throws IOException
	{
    
    		BufferedReader br = new BufferedReader (new InputStreamReader(System.in));

		int a, b, result=0;
		char op;

		System.out.print("첫 번째 정수 입력 : ");
		a= Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b= Integer.parseInt(br.readLine());

		System.out.print("연산자 입력(+ - * /) : ");
		op = (char)System.in.read();

		if (op == '+')
			result = a + b;
		else if (op == '-')
			result = a - b;
		else if (op == '*')
			result = a * b;
		else if (op == '/')
			result = a / b;
		else
			System.out.println("입력 과정에 오류가 존재해서 연산이 안됩니다요!");

		


		System.out.printf("\n>> %d %c %d = %d\n", a,op,b,result);

		//Integer.parseInt(문자); → 아스키코드값이 아니다! ★ 주의
		//Integer.parseInt(문자열); → "123455"의 값을 123455로 준다.
		
	}
}

 

/*====================================
 ■■■  실행 흐름의 컨트롤 (제어문) ■■■
 - if ~ else문 실습
 =====================================*/

//사용자로부터 임의의 정수를 입력받아
// 입력받은 정수가 2의 배수인지 3의 배수인지
// 2와 3의 배수인지, 2와 3의 배수가 아닌지 판별하여
// 결과를 출력하는 프로그램을 구현한다.

// 실행 예) 
// 임의의 정수 입력 : 8
// >>8 → 2의 배수!
// 계속하려면 아무 키나...

// 임의의 정수 입력 : 9 
// 9 → 3의 배수!
// 계속하려면 아무 키나...

// 임의이 정수 입력 : 6
// 6 → 2와 3의 배수!

//임의의 정수 입력 : 11
// 1 → 2와 3의 배수 아님!!!
//계속하려면 아무 키나

 

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


public class Test035

{
	public static void main(String[] args) throws IOException
	{
		BufferedReader br = new BufferedReader( new InputStreamReader(System.in));

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

		if (n % 2 ==0 && n % 3 ==0)
			System.out.printf(">> %d → 2와 3의 배수!\n",n);
		else if (n % 2 ==0)
			System.out.printf(">> %d → 2의 배수!\n",n);
		else if (n % 3 ==0)
			System.out.printf(">> %d → 3의 배수!\n",n);
		else if (n % 2 !=0 && n % 3 != 0)
			System.out.printf(">> %d → 2와 3의 배수가 아님!\n",n);		
		
		else 
			System.out.print(" >> 판별이 불가능한 상황!\n");
		

		//※ 위와 같은 상황에서는 2와 3의 배수라는(공통배수) 조건식에는
		//   만족하는 데이터가 분기될 수 없는 상황이다 check point


	}
}

//※ 위와 같은 상황에서는 2와 3의 배수라는(공통배수) 조건식에는
//   만족하는 데이터가 분기될 수 없는 상황이다 check point ?? 마지막 부분 이해가 잘 안된다.

 

 

 

 

 

/*====================================
 ■■■  실행 흐름의 컨트롤 (제어문) ■■■
 - if ~ else문 실습
 =====================================*/

// 사용자로부터 임의의 정수를 세 개 입력받아
// 작은 수 부터 큰 수 순으로 출력하는 프로그램을 구현한다. (오름차순 정렬)

// 실행 예)
// 첫 번째 정수 입력 : 45
// 두 번째 정수 입력 : 81
// 세 번째 정수 입력 : 13

// >> 정렬 결과 : 13 45 81
// 계속하려면 아무 키나....

 

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

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


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

		int a, b, c;
		int temp;

		System.out.print("첫 번째 정수 입력 : ");
		a = Integer.parseInt(br.readLine());

		System.out.print("두 번째 정수 입력 : ");
		b = Integer.parseInt(br.readLine());

		System.out.print("세 번째 정수 입력 : ");
		c = Integer.parseInt(br.readLine());


		if (a>b)
		{
			temp =a;
			a=b;
			b=temp;
		}
		if (b>c)
		{
			temp =b;
			b=c;
			c=temp;
		}
		if (a>b)
		{
			temp =a;
			a=b;
			b=temp;
		}


			System.out.printf(">> 정렬 결과 : %d %d %d\n", a,b,c);
		

	}
}

a와 b의 크기를 비교하여 a가 더 크면 자리를 바꾸고 아니라면 그대로 둔다.

b와 c의 크기를 비교하여 b가 더 크면 자리를 바꾸고 아니라면 그대로 둔다.

마지막으로 b와 c의 자리를 바꿨을 것을 가정해 a와 b의 크기를 다시 비교하면 결과를 출력할 수 있다.

 

 

/*====================================
 ■■■  실행 흐름의 컨트롤 (제어문) ■■■
 - if ~ else문 실습
 =====================================*/

// 사용자로부터 임의의 정수를 세 개 입력받아
// 작은 수 부터 큰 수 순으로 출력하는 프로그램을 구현한다.
// 단, 입력 데이터를 한 번에 처리할 수 있도록 구성하며 (Scanner사용)
// xor 연산자를 활용하여 스왑 처리를 할 수 있도록 한다.

// 실행 예)
// 임의의 세 정수 입력(공백 구분) : 54 23 31

// >> 정렬 결과 : 23 31 54
// 계속하려면 아무 키나....

 

import java.util.Scanner;

public class Test037
{
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		int a ,b, c;

		System.out.print("임의의 세 정수 입력(공백 구분) : ");
		a = sc.nextInt();
		b = sc.nextInt();
		c = sc.nextInt();
		

		if (a>b)
		{
			a=a^b; b=b^a; a=a^b;
		}
		if (b>c)
		{
			b=b^c; c=c^b; b=b^c;
		}
		if (a>b)
		{
			a=a^b; b=b^a; a=a^b;
		}

		System.out.printf("\n >> 정렬 결과 : %d %d %d\n", a,b,c);
	}
}

 

위에서는 int temp를 활용하여 자리를 바꿨지만 이번 케이스에서는 xor 연산자를 활용하여 자리를 바꾼다.

x, y 의 자리를 바꾸기 위해서는

x = x^y;

y = y^x;

x = x^Y;

하면 된다.