포스트

Java의 Math.random 함수, Scanner, if 및 switch 조건문

강의 내용 복습 : 코리아IT 신촌점 Java 강의 (2024-04-17 강의)

  • Tool :
    Java Eclipse


🔔 강의 내용

📌 클래스 import 단축키

  • ‘Ctrl + Shift + O’는 Java에 기본적으로 내장된 클래스를 한꺼번에 import하는 단축키입니다.

📌 다중 주석 처리

  • ‘Ctrl + /’는 드래그 된 상태의 코드 행을 한꺼번에 주석 처리시키는 단축키입니다.

📌 랜덤 함수

  • Java에는 random()이라는 랜덤으로 실수를 출력하는 함수가 있습니다.
  • 이는 Java의 Math 클래스에 기본 내재된 함수이며 Eclipse 등의 IDE에서 바로 사용 가능합니다.
  • random() 함수로 출력할 수 있는 수는 정수 0 ~ 1 사이의 실수입니다.
  • 즉, random() 함수로 출력되는 수의 기본 유형은 double이 되겠습니다.
  • 아래는 Math.random()의 출력 예시입니다.
1
2
3
4
5
6
public static void main(String[] args) {
    
    double rand = Math.random();
    System.out.println("랜덤값 = " + rand);

}

📌 조건문 if 및 switch

  • if 조건문은 범위를 설정하고 범위에 맞는 값을 출력하는 기능을 제공합니다.
  • if 조건문은 일반적으로 else, else-if 조건문과 함께 사용됩니다.
  • switch 조건문은 case 레이블과 함께 사용되며 정해진 답을 출력하는 기능을 제공합니다.
  • 현업에서는 대부분 if 조건문이 사용되고 switch 조건문은 거의 사용되지 않습니다.
  • 참고로 레이블(label)이란 식별자로서 프로그램 내 특정 지점을 지칭하는 데 사용됩니다.

📌 Scanner 클래스

  • Java의 Scanner 클래스는 타이핑 된 내용을 출력하는 기능을 제공합니다.
  • Scanner 클래스는 보통 next(), nextInt(), nextLine() 메서드와 함께 사용됩니다.
  • Scanner(System.in) 기능으로 입력받아진 내용은 버퍼(buffer) 메모리 공간에 저장(기억)됩니다.
  • 버퍼 메모리에 저장된 데이터는 플러시(flush) 기능으로 초기화시켜야 됩니다.
  • 메모리 공간을 초기화시키지 않으면 문자 입력 전에 잔여된 엔터가 출력되는 문제가 있습니다.


🔔 응용 학습

📌 랜덤 함수 및 if 조건문

  • 랜덤 함수는 보통 정수형으로 강제 형변환(type casting)하여 이용됩니다.
  • 또한 랜덤 함수로 출력될 값에 곱셈 및 덧셈을 하여 최댓값 및 최솟값을 설정할 수 있습니다.
  • 최솟값의 경우 출력되는 값이 0 ~ 1 사이의 실수이기 때문에 더하는 값입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public static void main(String[] args) {
    
    // 1부터 100 사이의 정수를 랜덤으로 반환하는 변수를 생성하였습니다.
    int rand = (int)(Math.random() * 100) + 1;
    
    if(rand > 70) {
        // 정수 70 초과일 경우 '상위권'이라는 문구를 출력하도록 설정하였습니다.
        System.out.println(rand + "% = 상위권");
    } else if(rand > 40) {
        // 정수 70 이하이면서 40 초과일 경우 '중위권'이라는 문구를 출력하도록 설정하였습니다.
        System.out.println(rand + "% = 중위권");
    } else {
        // 정수 40 이하일 경우 '하위권'이라는 문구를 출력하도록 설정하였습니다.
        System.out.println(rand + "% = 하위권");
    }

}

📌 랜덤 함수 및 switch 조건문

  • 랜덤 함수로 출력된 정수 및 switch 조건문을 이용하여 알맞은 문구를 출력시켰습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
public static void main(String[] args) {
    
    // 1부터 100 사이의 정수를 랜덤으로 반환하는 변수를 생성하였습니다.
    int rand = (int)(Math.random() * 100) + 1;
    
    // switch 조건문으로 rand 변수에서 반환되는 값을 10으로 나누도록 설정하였습니다.
    // 즉, 랜덤으로 정수 1부터 10까지의 값을 반환하도록 설정하였습니다.
    switch(rand / 10) {
    // 반환된 값이 7 ~ 10일 경우 상위권으로 분류하였습니다.
    // case 레이블을 이용하여 반환된 값이 설정한 값과 일치할 경우 실행될 코드 블록을 정의하였습니다.
    case 10:
    // break 없이 다음 case로 fall-through하였습니다.
    case 9:
    // break 없이 다음 case로 fall-through하였습니다.
    case 8:
    // break 없이 다음 case로 fall-through하였습니다.
    case 7:
        System.out.println(rand + " = 상위권");
        // 상위권 분류 내용 출력 후 switch 문으로부터 이탈시켰습니다.
        break;
    // 반환된 값이 4 ~ 6일 경우 중위권으로 분류하였습니다.
    case 6:
    // break 없이 다음 case로 fall-through하였습니다.
    case 5:
    // break 없이 다음 case로 fall-through하였습니다.
    case 4:
        System.out.println(rand + " = 중위권");
        // 중위권 분류 내용 출력 후 switch 문으로부터 이탈시켰습니다.
        break;
    // 반환된 값이 4 미만일 경우 하위권으로 분류하였습니다.
    // default 레이블을 이용하여 반환된 값이 어떠한 case 레이블에도 해당되지 않을 때 실행될 코드 블록을 정의하였습니다.
    default:
        // 하위권 분류 내용 출력 후 switch 문으로부터 이탈시켰습니다.
        System.out.println(rand + " = 하위권");
    }

}

📌 Scanner 클래스 및 if 조건문

  • Scanner 클래스를 이용하여 조건에 맞는 내용을 출력하였습니다.
  • nextInt() 메서드는 입력된 숫자를 반환합니다.
  • next() 메서드는 공백 직전까지의 토큰(단어)으로 구분되는 문자열을 반환합니다.
  • nextLine() 메서드는 줄바꿈 문자(엔터) 직전까지의 전체 문자열을 반환합니다.

📌 Scanner 클래스 사용 시 주의할 점

  • nextXXX() 메서드 실행 후 바로 nextLine() 메서드가 있으면 입출력 문제가 발생됩니다.
  • nextXXX() 메서드는 버퍼 공간에 줄바꾼 문자를 남기기 때문입니다.
  • 줄바꿈 문자를 인식한 nextLine()은 아무 입력을 수용하지 못하고 메서드를 종료시킵니다.
  • 따라서 nextLine()을 사용하기 전에 버퍼에 남아있는 데이터를 제거해야 됩니다.
  • 이를 위해서 nextLine() 위 빈 줄에 nextLine()을 한 번 더 작성해야 됩니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void main(String[] args) {
    
    // 키보드로 타이핑 된 내용을 버퍼 공간에 저장하는 scan 변수를 정의하였습니다.
    Scanner scan = new Scanner(System.in);
    
    // 3명의 시험 점수를 입력할 수 있는 반복문을 작성하였습니다.
    for(int i = 0; i < 3; i++) {
        // 점수 입력을 안내하는 문구를 출력하였습니다.
        System.out.println("점수를 입력하세요.");
        // 점수를 입력할 수 있는 score 변수를 정의하였습니다.
        int score = scan.nextInt();
        // 점수가 70점 초과일 경우 상위권으로 분류하였습니다.
        if(score > 70) {
            System.out.println(score + "점 = 상위권");
        // 점수가 70점 이하 40점 초과일 경우 중위권으로 분류하였습니다.
        } else if(score > 40) {
            System.out.println(score + "점 = 중위권");
        // 점수가 40점 이하일 경우 하위권으로 분류하였습니다.
        } else {
            System.out.println(score + "점 = 하위권");
        }
    }
    
    // 버퍼 공간에 잔여되어 있는 모든 공백을 제거하였습니다.
    scan.nextLine();
    
    // 질문을 입력할 수 있도록 설정하였습니다. 
    System.out.println("질문을 입력하세요.");
    String question = scan.nextLine();
    System.out.println("질문 = " + question);

}




이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.
<>