4장 조건문과 반복문

slee2·2021년 9월 3일
0

Java의 정석

목록 보기
5/28
post-thumbnail
post-custom-banner

조건문

  • 조건을 만족할때만 {}를 수행

반복문

  • 조건을 만족하는 동안 {}를 수행
조건식조건식이 참일 조건
90 <= x && x <= 10정수 x가 90 이상 100 이하일때
x < 0 || x > 100정수 x가 0보다 작거나 100보다 클 때
x % 3 == 0 && x % 2 != 0정수 x가 3의 배수지만, 2의 배수는 아닐 때
ch == 'y' || ch == 'Y'문자 ch가 'y' 또는 'Y'일 때
ch == ' ' || ch == '\t' || ch == '\n"문자 ch가 공백이거나 탭 또는 개행 문자일 때
str.equals("yes")문자열 str의 내용이 "yes"일 때(대소문자 구분)
str.equalsIgnoreCase("yes")문자열 str의 내용이 "yes"일 때 (대소문자 구분 안함)

if -else문, if-else if 문

if (조건식1) {
 // 조건식1이 참(true)일 때 수행될 문장들을 적는다.
} else if (조건식2) {
 // 조건식2이 거참(true)일 때 수행될 문장들을 적는다.
} else {
 // 위의 어느 조건식도 만족하지 않을때 수행될 문장들을 적는다.
}

예제

import java.util.Scanner;

class Ex4_4 {
  public static void main(String[] args) {
     int score = 0;
     char grade = ' ';
     
     System.out.print("점수를 입력하세요.>");
     Scanner scanner = new Scanner(System.in);
     score = scanner.nextInt();
     if (score >= 90) {
        grade = 'A';
     } else if (score >= 80) {
        garde = 'B';
     } else if (score >= 70) {
        garde = 'C';
     } else {
        garde = 'D';
     }
     System.out.println("당신의 학점은 " + grade + "입니다.");
  }
}

RUN
점수를 입력하세요.>
80
당신의 학점은 B입니다.

중첩 if 문

if (num >= 0)
   if (num != 0)
      sign = '+';
else
   sign = '-';if (num >= 0) {
   if (num != 0) {
      sign = '+';
   } else {
      sign = '-';
   }
}

Switch 문

  • switch문은 깔끔하지만, if문에 비해 제약 조건이 있다.
switch (조건식) {
   case1 :
       // 조건식의 결과가 값1과 같을 경우 수행될 문장들
       //...
       break;
   case2 :
      // 조건식의 결과가 값2과 같을 경우 수행될 문장들
      //...
      break;   // switch문을 벗어난다.
    default :
      // 조건식의 결과와 일치하는 case문이 없을때 수행될 문장들
      //...
}

switch문의 제약 조건

  1. switch 문의 조건식 결과는 정수 또는 문자열이어야 한다.

  2. case문의 값은 정수 상수(문자 포함), 문자열만 가능하며, 중복되지 않아야 한다. ( 변수는 안된다.)

int num, result;
final int ONE = 1;
  ...
switch(result) {
   case '1':      // OK. 문자 리터럴
   case ONE:      // OK. 정수 상수
   case "YES":    // OK. 문자열 리터럴. JDK 1.7부터 허용
   case num:      // 에러. 변수
   case 1.0:      // 에러. 실수
      ...
}

switch 문은 break를 쓰지 않으면 밑의 case까지 전부 실행한다.

아래 경우를 보면 score에 1을 입력하면 case1을 들어가고 break가 없어 그냥 밑의 문장으 전부 실행하는 모습을 볼 수 있다.

그래서 switch문에서 break;는 거의 필연적이라고 볼 수 있다. 조건과 상관없이 전부 실행하기 때문이다.

import java.util.*;

public class Hello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int	score = 0;
		char grade = ' ';
		
		System.out.println("점수를 입력하세요.>");
		Scanner scanner = new Scanner(System.in);
		score = scanner.nextInt();
		switch(score) {
		case 1:
			System.out.println("aaa");
		case 2:
			System.out.println("abc");
		}
		System.out.println("당신의 학점은 " + grade + "입니다.");
	}
}

RUN
점수를 입력하세요.>
1
aaa
abc
당신의 학점은  입니다.
post-custom-banner

0개의 댓글