/*====================================
■■■ 실행 흐름의 컨트롤 (제어문) ■■■
- 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;
하면 된다.
'📚Study Note > JAVA' 카테고리의 다른 글
[ JAVA ] SWITCH 문 (0) | 2021.03.13 |
---|---|
[ JAVA ] if ~ else문 ② (0) | 2021.03.13 |
제어문 _ IF 문 (0) | 2021.03.05 |
삼항 연산자를 활용한 윤년 / 평년 판별 (0) | 2021.03.04 |
삼항연산자를 통한 홀수/짝수 , 정수(- + 0) 판별 (0) | 2021.03.04 |