나를 기록하다
article thumbnail
반응형

1. 조건문 - if, switch


1.1 if

if (조건식) {
				// 조건식이 참(true)일 때 수행될 문장들을 적음.
}
  • 블럭 내의 문장이 하나뿐일 때는 괄호{} 생략 가능
  • [예제] 괄호 생략 가능
if(score > 60)    System.out.println("합격입니다.")

→ 나중에 새로운 문장들이 추가되면 괄호{}로 문장들을 감싸주어야 함.

→ 감싸지 않을 경우의 예시

if (score > 60)
		System.out.println("합격입니다."); // 문장 1. if문에 속한 문장
		System.out.println("축하드립니다."); // 문장 2. if문에 속하지 않은 문장
  • [예제] if문을 활용하여 입력받은 숫자가 0인지 아닌지 판별하기
import java.util.Scanner;

public class _01_FlowEx2 {
    public static void main(String[] args) {
        int input;

        System.out.print("숫자를 하나 입력하세요 >> ");

        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        input = Integer.parseInt(tmp);

        if(input == 0) {
            System.out.println("입력하신 숫자는 0입니다.");
        } else {
            System.out.println("입력하신 숫자는 0이 아닙니다.");
            System.out.printf("입력하신 숫자는 %d입니다.", input);
        }
    }
}
// 0 입력 시
숫자를 하나 입력하세요 >> 0
입력하신 숫자는 0입니다.

// 5 입력 시(0 이외의 숫자)
숫자를 하나 입력하세요 >> 5
입력하신 숫자는 0이 아닙니다.
입력하신 숫자는 5입니다.

 

1.2 if-else, if-else if

  • [예제] if-else if문을 이용하여 점수에 해당하는 학점 구하기
import java.util.Scanner;

public class _02_ElseIf {
    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) {
            grade = 'B';
        } else if (score >= 70) {
            grade = 'C';
        } else {
            grade = 'D';
        }
        System.out.println("당신의 학점은 " + grade + "입니다.");
    }
}
// 결과
점수를 입력하세요 >> 91
당신의 학점은 A입니다.

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

점수를 입력하세요 >> 79
당신의 학점은 C입니다.

점수를 입력하세요 >> 30
당신의 학점은 D입니다.

 

1.3 중첩 if

  • [예제] 중첩 if문을 활용하여 점수에 해당하는 학점 구하기
import java.util.Scanner;

public class _03_Overlapped {
    public static void main(String[] args) {
        int score = 0;
        char grade = ' ', opt = '0';

        System.out.print("점수를 입력하세요 >> ");
        Scanner scanner = new Scanner(System.in);

        score = scanner.nextInt();

        System.out.printf("당신의 점수는 %d입니다.%n", score);

        if (score >= 90) {
            grade = 'A';
            if (score >= 98) {
                opt = '+';
            } else if (score < 94) {
                opt = '-';
            }
        } else if (score >= 80) {
            grade = 'B';
            if (score >= 88) {
                opt = '+';
            } else if (score < 84) {
                opt = '-';
            }
        } else {
            grade = 'C';
        }
        System.out.printf("당신의 학점은 %c%c입니다.%n", grade, opt);
    }
}
점수를 입력하세요 >> 98
당신의 점수는 98입니다.
당신의 학점은 A+입니다.

점수를 입력하세요 >> 96
당신의 점수는 96입니다.
당신의 학점은 A0입니다.

점수를 입력하세요 >> 90
당신의 점수는 90입니다.
당신의 학점은 A-입니다.

점수를 입력하세요 >> 89
당신의 점수는 89입니다.
당신의 학점은 B+입니다.

점수를 입력하세요 >> 84
당신의 점수는 84입니다.
당신의 학점은 B0입니다.

점수를 입력하세요 >> 81
당신의 점수는 81입니다.
당신의 학점은 B-입니다.

점수를 입력하세요 >> 79
당신의 점수는 79입니다.
당신의 학점은 C0입니다.

 

*nextInt()와 nextLine()

1. nextInt()

'nextInt'는 자바(Java)의 Scanner 클래스(Scanner class)에 있는 메소드(method)로, 콘솔(console)을 통해 사용자로부터 다음 정수형(integer) 입력을 읽어옵니다. 보통 프로그램에서 사용될 정수형 입력을 받기 위해 사용됩니다.

다음은 'nextInt'가 사용된 예시입니다:

javaCopy code
import java.util.Scanner;

public class Example {
   public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.print("정수를 입력하세요: ");
      int num = scanner.nextInt();
      System.out.println("입력한 정수는 " + num + "입니다.");
   }
}

위 예시에서 'nextInt' 메소드는 사용자가 입력한 정수를 읽어와 'num' 변수에 저장합니다. 그리고 프로그램은 사용자가 입력한 정수를 출력합니다.

'user'가 정수 외에 문자열이나 소수점 등을 입력할 경우 예외(exception)가 발생하므로, 'nextInt'를 사용하는 프로그램에서는 에러 처리(error handling)를 포함하는 것이 좋습니다.

 

2. nextLine

'nextLine'은 자바(Java)의 Scanner 클래스(Scanner class)에 있는 메소드(method)로, 콘솔(console)을 통해 사용자로부터 한 줄의 문자열(string) 입력을 읽어옵니다.

보통 'nextLine'은 'nextInt'와 함께 사용되어, 사용자가 입력한 정수가 아닌 문자열을 읽어올 때 사용됩니다. 이는 'nextInt' 메소드에서 정수를 읽어오고 난 후, 버퍼(buffer)에 남아있는 엔터(enter) 키를 'nextLine' 메소드가 처리하여 문자열을 읽어올 수 있게 하기 위함입니다.

다음은 'nextLine'이 사용된 예시입니다:

javaCopy code
import java.util.Scanner;

public class Example {
   public static void main(String[] args) {
      Scanner scanner = new Scanner(System.in);
      System.out.print("이름을 입력하세요: ");
      String name = scanner.nextLine();
      System.out.println("안녕하세요, " + name + "님!");
   }
}

위 예시에서 'nextLine' 메소드는 사용자가 입력한 한 줄의 문자열을 읽어와 'name' 변수에 저장합니다. 그리고 프로그램은 사용자의 이름을 출력합니다.

'nextLine' 메소드는 사용자로부터 공백을 포함한 문자열을 입력받을 수 있으며, 엔터(enter) 키를 입력할 때까지 대기합니다.

 

 

1.4 switch

1.4.1 switch문 수행 순서

1. 조건식을 계산한다.
2. 조건식의 결과와 일치하는 case문으로 이동한다.
3. 이후의 문장들을 수행한다.
4. break문이나 switch문의 끝을 만나면 switch문 전체를 빠져나간다.

 

1.4.2 switch 문의 제약조건

1. switch문의 조건식 결과는 정수 또는 문자열이어야 한다.
2. case문의 값은 정수 상수만 가능하며, 중복되지 않아야 한다.

  • [예제] swtich문을 활용하여 월별 계절 출력
import java.util.Scanner;

public class _04_Switch {
    public static void main(String[] args) {
        System.out.print("현재 월을 입력하세요 >>");

        Scanner scanner = new Scanner(System.in);
        int month = scanner.nextInt();

        switch (month) {
            case 3 :
            case 4 :
            case 5 :
                System.out.println("현재 계절은 봄입니다.");
                break;

            case 6 : case 7 : case 8 :
                System.out.println("현재 계절은 여름입니다.");
                break;

            case 9 : case 10 : case 11 :
                System.out.println("현재 계절은 가을입니다.");
                break;
            default:
            case 12 : case 1 : case 2 :
                System.out.println("현재 계절은 겨울입니다.");
        }
    }
}
현재 월을 입력하세요 >>3
현재 계절은 봄입니다.

현재 월을 입력하세요 >>8
현재 계절은 여름입니다.

현재 월을 입력하세요 >>8
현재 계절은 여름입니다.

현재 월을 입력하세요 >>12
현재 계절은 겨울입니다.

현재 월을 입력하세요 >> 0
현재 계절은 겨울입니다. // default 값

 

  • [예제] switch문을 활용하여 가위바위보 게임 만들기
import java.util.Scanner;

public class _05_RockPaperScissors {
    public static void main(String[] args) {
        System.out.print("가위(1), 바위(2), 보(3) 중 하나를 입력하세요 >> ");

        Scanner scanner = new Scanner(System.in);
        int user = scanner.nextInt();
        int com = (int) (Math.random() * 3) + 1; // Math.random -> 0 ~ 1 구간에서 부동소수점의 난수 생성

        if(user >= 1 && user <= 3 && com >= 1 && com <= 3) {
            System.out.println("당신은 " + user + "입니다.");
            System.out.println("컴퓨터는 " + com + "입니다.");

            switch (user-com) {
                case 2 : case -1 :
                    System.out.println("당신은 패배했습니다.");
                    break;

                case 1 : case -2 :
                    System.out.println("당신은 승리했습니다.");
                    break;

                case 0 :
                    System.out.println("당신은 비기셨습니다.");
                    break;
                }
            } else {
            System.out.println("오류가 발생했습니다. 게임을 종료합니다.");
        }
    }
}
가위(1), 바위(2), 보(3) 중 하나를 입력하세요 >> 1
당신은 1입니다.
컴퓨터는 1입니다.
당신은 비기셨습니다.

가위(1), 바위(2), 보(3) 중 하나를 입력하세요 >> 2
당신은 2입니다.
컴퓨터는 3입니다.
당신은 패배했습니다.

가위(1), 바위(2), 보(3) 중 하나를 입력하세요 >> 3
당신은 3입니다.
컴퓨터는 3입니다.
당신은 비기셨습니다.

가위(1), 바위(2), 보(3) 중 하나를 입력하세요 >> 0
오류가 발생했습니다. 게임을 종료합니다.

 

  • [예제] switch문을 활용하여 주민등록번호를 입력받아 성별 출력하기
import java.util.Scanner;

public class _06_PrintGender {
    public static void main(String[] args) {
        System.out.print("당신의 주민등록번호를 입력하세요. ex) 230129-1234567 >> ");

        Scanner scanner = new Scanner(System.in);
        String regNo = scanner.nextLine();

        char gender = regNo.charAt(7); // 입력받은 번호의 8번째 문자를 gender에 저장

        if(regNo.charAt(6) == '-') { // 7번째에 '-'가 포함되지 않으면 유효하지 않은 주민등록번호로 인식하도록 만듬.
            switch(gender) {
                case '1' : case '3' :
                    System.out.println("당신의 성별은 남성입니다.");
                    break;

                case '2' : case '4' :
                    System.out.println("당신의 성별은 여성입니다.");
                    break;
                default:
                    System.out.println("유효하지 않은 주민등록번호입니다.");
            }
        } else {
            System.out.println("유효하지 않은 주민등록번호입니다.");
        }
    }
}
당신의 주민등록번호를 입력하세요. ex) 230129-1234567 >> 001212-1234567
당신의 성별은 남성입니다.

당신의 주민등록번호를 입력하세요. ex) 230129-1234567 >> 230129-2234567
당신의 성별은 여성입니다.

당신의 주민등록번호를 입력하세요. ex) 230129-1234567 >> 12345-11111
유효하지 않은 주민등록번호입니다.

 

  • [예제] switch문에서 점수에 해당하는 학점 출력(조건식을 이용하여 case문의 갯수 줄이기)
import java.util.Scanner;

public class _07_PrintGrade {
    public static void main(String[] args) {
        int score = 0;
        char grade = ' ';

        System.out.print("당신의 점수를 입력하세요 >> ");

        Scanner scanner = new Scanner(System.in);
        String tmp = scanner.nextLine();
        score = Integer.parseInt(tmp);

        if(score >= 0 && score <= 100) {
            switch (score/10) {
                case 10: case 9:
                    grade = 'A';
                    break;

                case 8:
                    grade = 'B';
                    break;

                case 7:
                    grade = 'C';
                    break;

                default:
                    grade = 'F';
            }
            System.out.println("당신의 학점은 " + grade + "입니다.");
        } else {
            System.out.println("잘못 입력하셨습니다. 프로그램을 종료합니다.");
        }
    }
}
당신의 점수를 입력하세요 >> 95
당신의 학점은 A입니다.

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

당신의 점수를 입력하세요 >> 44
당신의 학점은 F입니다.

당신의 점수를 입력하세요 >> 101
잘못 입력하셨습니다. 프로그램을 종료합니다.

 

  • [예제] switch문의 중첩 : break 빼먹지 않게 유의하기!
import java.util.Scanner;

public class _08_Switch_Overlapped {
    public static void main(String[] args) {
        System.out.print("당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> ");

        Scanner scanner = new Scanner(System.in);
        String regNo = scanner.nextLine();
        char gender = regNo.charAt(7);

        if(regNo.charAt(6) == '-' && regNo.length() == 14) { // '-' 기호를 포함하고 기호 포함 총 14자리
            switch (gender) {
                case '1': case '3':
                    switch (gender) {
                        case '1':
                            System.out.println("2000년 이전에 태어난 남성");
                            break;
                        case '3':
                            System.out.println("2000년 이후에 태어난 남성");
                    }
                    break;

                case '2': case '4':
                    switch (gender) {
                        case '2':
                            System.out.println("2000년 이전에 태어난 여성");
                            break;
                        case '4':
                            System.out.println("2000년 이후에 태어난 여성");
                    }
                    break;
                default:
                    System.out.println("유효하지 않은 주민등록번호입니다.");
            }
        } else {
            System.out.println("유효하지 않은 주민등록번호입니다.");
        }
    }
}
당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 000101-4412341
2000년 이후에 태어난 여성

당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 950502-2210213
2000년 이전에 태어난 여성

당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 991010-1122113
2000년 이전에 태어난 남성

당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 050430-3123114
2000년 이후에 태어난 남성

// 오류 예시
당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 123124-51251234
유효하지 않은 주민등록번호입니다.

당신의 주민등록번호를 입력하세요. ex) 123456-1234567 >> 12312-55123344
유효하지 않은 주민등록번호입니다.

 

반응형
profile

나를 기록하다

@prao

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...