본문 바로가기
Programming/Java

[Java] 조건문

by AI_Wooah 2022. 3. 7.

 

코딩 문제 풀기에 앞서 생각할 것.

  • [ ] 입력값 출력값
  • [ ] 조건문 확인
  • [ ] 어떤 제어문 쓸건지 로직 정하기
  • [ ] 로직에 맞게 코딩

if 문

조건식의 결과 값이 참(true)이면 { } 안에 있는 코드를 실행하고, 거짓(false)면 { } 안의 코드를 무시하고 넘어가 실행하지 않음.

[표현식]
if(조건식) {
	................
}
  • 숫자를 하나 입력 받아 홀수인지 짝수인지 출력
	public void testIf() {
		
		Scanner sc = new Scanner(System.in);
		System.out.println("숫자를 한 개 입력하세요 : ");
		int num = sc.nextInt();
		
		// 짝수인지 조건을 확인함
		if(num % 2 == 0) {
			// 결과가 참일 대 수행함
			System.out.println("입력하신 숫자는 짝수입니다.");
		}
		
		
		if(num % 2 == 1) {
			// 결과가 참일 때 수행함
			System.out.println("입력하신 숫자는 홀수입니다.");
		}
		
		System.out.println("프로그램 종료");
		
		
	}

if else 문

조건식의 결과 값이 true면 If의 {} 안의 내용을 실행하고 false면 else의 {} 안의 내용을 실행

  • 둘 중 한 개를 선택하는 조건문으로, 조건이 참인 경우 수행하는 내용과 조건이 거짓인 경우 수행하는 내용을 따로 작성해두는 경우 사용한다.
[표현식]
if(조건식) {
	조건이 참인 경우 실행할 내용;
} else {
	조건이 거짓인 경우 실행할 내용;
}
  • 숫자를 하나 입력 받아 홀수인지 짝수인지 출력
public void testIfElse() {
		Scanner sc = new Scanner(System.in);
		
		System.out.println("정수 하나 입력 : ");
		int num = sc.nextInt();
		
		if(num % 2 == 0) {
			System.out.println("입력하신 정수는 짝수입니다.");
		} else {
			System.out.println("입력하신 정수는 홀수입니다.");
		}
	}
  • 숫자를 하나 입력 받아 양수인지 음수인지 출력(단, 0이면 "0입니다" 라고 출력하세요.)
public void testIfElse2() {
		
		Scanner sc1 = new Scanner(System.in);
		
		System.out.println("정수 하나 입력 : ");
		int num = sc1.nextInt();
		
		if(num != 0) {
			if(num > 0) { 
				System.out.println("입력하신 숫자는 양수입니다.");
			} else {
				System.out.println("입력하신 숫자는 음수입니다.");
			}
		} else {
			System.out.println("입력하신 숫자는 0입니다.");
		}
	}

else if 문

if의 조건식의 결과 값이 true면 조건식 1의 { }안의 내용을 실행하고 false면 else if문의 조건식 검사결과가 true면 조건식 2의 { } 실행 false면 else의 { } 실행

[표현식]
		if(조건식1) {
			조건식 1이 참인 경우 실행할 내용;
		} else if(조건식2) {
			(조건식 1은 아니면서 조건식 2는 맞다는 내용을 내포하고 있음
			조건식 1이 참인 경우 실행할 내용;
		} else (
			위의 조건식 모두 거짓인 경우 실행할 내용;
		}
  • 점수를 하나 입력 받아 등급을 나누어 점수와 등급을 출력하세요 등급은, 90점 이상은 A등급 90점 미만 80점은 B등급 80점 미만 70점은 C등급 70점 미만 60점은 D등급 60점 미만은 F등급으로 나눈다
public void testIfElseIf() {

		

		Scanner sc = new Scanner(System.in);
		
		System.out.println("점수를 입력하세요 : ");
		int point = sc.nextInt();
		char grade = ' ';
		
		
		//if else if 구문은 위의 조건 구문을 만족하지 못하고 내려왔기 때문에
		//당연히 그 조건의 반대 조건을 내부적으로 포함하고 있다.
		if(point >= 90 && point <=100) {
			grade = 'A';
		} else if(/*point < 90 &&*/ point >= 80) {
			grade = 'B';
		} else if(/*point < 80 &&*/ point >= 70) {
			grade = 'C';
		} else if(/*point < 70 &&*/ point >= 60) {
			grade = 'D';
		} else {
			grade = 'F';
		}
		
		//System.out.println("당신의 점수는 " + point + "점이고, 등급은 " + grade + "입니다.");
		
		System.out.printf("당신의 점수는 %d 이고, 등급은 %c 입니다.", point, grade);
		System.out.printfln("test");
		//printf 포맷
		//포맷 문자와 값은 갯수와 자료형, 순서가 일치해야 한다.
		//System.out.println("%형식을 가진 문자열", 값(혹은 변수), ...); 의 형태로 사용한다.
		//-> 정해져있는 형식에 맞춰서 그 형식에 맞는 값(변수)를 줄바꿈하지 않고 출력함
	}
  • 포맷 문자
%d : 정수형
%f : 실수(소수점 아래 6자리)
%c : 문자
%s : 문자열
%b : 논리형
%5d : 5칸을 확보하고 오른쪽 정렬
%-5d : 5칸을 확보하고 왼쪽 정렬
%.2f : 소수점 아래 2자리까지만 표시
  • 특수문자(escape문자)
tab : \\t
new line : \\n
작은따옴표 : \\'
큰따옴표 : \\"
역를래쉬 : \\\\

중첩 if 문

  • 위의 성적 출력 문제에 각 등급별 중간 점수 이상의 경우에는 등급에 "+"라는 문자를 추가하여 출력하세요 예) 95점 이상은 등급이 A+로 출력되도록 함
Scanner sc1 = new Scanner(System.in);
		
		System.out.println("점수를 입력하세요 : ");
		int point1 = sc1.nextInt();
		String grade1 = " ";
		
		if(point1 >= 90 && point1 <=100) {
			grade1 = "A";
			if(point1 >= 95) {
				grade1 += "+";
			}
		} else if(point1 >= 80) {
			grade1 = "B";
			if(point1 >= 85) {
				grade1 += "+";
			}
		} else if(point1 >= 70) {
			grade1 = "C";
			if(point1 >= 75) {
				grade1 += "+";
			}
		} else if(point1 >= 60) {
			grade1 = "D";
			if(point1 >= 65) {
				grade1 += "+";
			}
		} else {
			grade1 = "F";
		}
		
		// if(point % 10 >= 5 && point >= 60) {
		// 	 grade += "+";
		// }

		System.out.println("당신의 점수는 " + point1 + "점이고, 등급은 " + grade1 + "입니다.");

	}
  • 정수 두개를 입력 받아, 두 수의 산술 연산(+, -, *, /, %)을 출력하세요 단, 두 수 모두 1부터 100 사이의 값이어야 함 둘중에 하나라도 범위에 속하지 않으면 "값은 1부터 100 사이여야 합니다." 출력하도록 함
public void testIfElse3() {
		
		Scanner sc2 = new Scanner(System.in);
		
		System.out.println("정수 하나 입력 : ");
		int num1 = sc2.nextInt();
		System.out.println("정수 하나 입력 : ");
		int num2 = sc2.nextInt();
		
		if(num1 > 0 && num1 <= 100) {
			if(num2 > 0 && num2 <= 100) { 
				System.out.println(num1 + " + " + num2 + " = " + (num1 + num2));
				System.out.println(num1 + " - " + num2 + " = " + (num1 - num2));
				System.out.println(num1 + " * " + num2 + " = " + (num1 * num2));
				System.out.println(num1 + " / " + num2 + " = " + (num1 / num2));
				System.out.println(num1 + " % " + num2 + " = " + (num1 % num2));
			} else {
				System.out.println("값은 1부터 100 사이여야 합니다.");
			}
		} else {
			System.out.println("값은 1부터 100 사이여야 합니다.");
		}
	}

switch 문

정수, 문자, 문자열에 있는 값()이랑 일치한 () case문을 실행, break를 만나면 switch를 빠져나간다.

  • 변수의 값을 case에서 찾아 명령을 수행하는 조건문이다. 해당하는 값이 없는 경우 default의 명령문을 수행한다. case 와 명령문 사이에는 콜론(:) 을 써야한다. brake 가 없으면 멈추지 않고 계속 수행한다.
[표현식]
	switch(변수(정수 or 문자 or 문자열))
	{
		case1 리터럴(정수 or 문자 or 문자열) : 실행문1; break;
		case2 리터럴(정수1 or 문자1 or 문자열1) : 실행문2; break;
		default : 실행문3; return;
  • 정수 두 개와 연산 기호 문자 1개를 입력받아서, 연산 기호에 해당하는 계산을 수행하고 출력하세요.
public void testSwitch() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("첫 번째 정수 : ");
		int first = sc.nextInt();
		System.out.println("두 번째 정수 : ");
		int second = sc.nextInt();
		System.out.println("연산자(+, -, *, /, %) : ");
		char op = sc.next().charAt(0);
		
		int result = 0;
		
		switch(op) {
		case '+' : result = first + second; break;
		case '-' : result = first - second; break;
		case '*' : result = first * second; break;
		case '/' : result = first / second; break;
		case '%' : result = first % second; break;
		default : System.out.println("잘못된 연산 기호를 입력하셨습니다."); return;
		
		}
		System.out.println(first + " " + op + " " + second + " = " + result);
	}
  • 1~12월까지 입력받아 해당하는 달의 마지막 날짜를 출력하세요
public void testSwitch2() {
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println("1월~12월 까지 중 하나를 입력하세요 : ");
		int num = sc.nextInt();
		
		switch(num) {
		case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : System.out.println("입력하신 월은 31일 까지 입니다."); break;
		case 4 : case 6 : case 9 : case 11 : System.out.println("입력하신 월은 30일 까지 입니다."); break;
		case 2 : System.out.println("입력하신 월은 28일 혹은 29일 까지 입니다."); break;
		default : System.out.println("반드시 1월~12월 까지를 입력해야 합니다. "); return;
		}
	}
반응형

'Programming > Java' 카테고리의 다른 글

[Java] 배열  (0) 2022.03.07
[Java] 반복문  (0) 2022.03.07
[Java] java.lang.Math  (0) 2022.03.07
[Java] 연산자  (0) 2022.03.07
[Java] 변수(Variable)  (2) 2020.10.26

댓글