[JAVA] 키보드 입력 받기(Scanner)

728x90

자바에서 Scanner 클래스는 입력 받을 직접 입력을 받기 위한 클래스입니다.

이 클래스는 데이터를 직접 입력받아 테스트를 하고자할 때 사용할 수 있습니다.

1. 문자열 타입

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String str1 = sc.next(); // next는 스페이스를 비롯한 공백 단위로 끊어서 문자열을 받음
        String str2 = sc.next();

        System.out.println("str1: " + str1);
        System.out.println("str2: " + str2);

        String str3 = sc.nextLine(); //nextLine은 줄바꿈 단위로 끊어서 문자열을 받음 -> 주로 사용

        System.out.println("str3: " + str3);
        System.out.println("단어를 입력해주세요.");

        // 입력값이 어떻게 반환되는지 아래 코드를 통해 확인
        while (sc.hasNext()) {
            String nextWord = sc.next();
            if (nextWord.equalsIgnoreCase("quit")) break;
            System.out.println("입력값: " + nextWord);
        }

        System.out.println("문장을 입력해주세요.");

        while (sc.hasNextLine()) {
            String nextSentence = sc.nextLine();
            if (nextSentence.equalsIgnoreCase("quit")) break;
            System.out.println("입력값: " + nextSentence);
        }

        // 스캐너의 사용이 끝나면 OS자원을 반환
        // 파일 등으로부터 읽어오는데 사용시 필수
        sc.close();
    }

}

2. 문자열 외 타입

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        //다른 타입의 자료를 넣으면 오류 발생
        boolean bool = sc.nextBoolean();
        System.out.println("bool: " + bool);
        int intNum = sc.nextInt();
        System.out.println("intNum: " + intNum);
        double dblNum = sc.nextDouble();
        System.out.println("dblNum: " + dblNum);

        System.out.println("정수를 입력해주세요.");

        while (sc.hasNextInt()) { //hasNext타입은 다음 입력값의 타입을 확인하여 일치하면 true 일치하지 않으면 false 반환
            System.out.println("입력값: " + sc.nextInt());
        }

        sc.close();

    }

}

3. 배열에 넣어서 사용

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        String [] strInputs = new String [5]; // 요소가 5개인 문자열 배열

        for (int i = 0; i < strInputs.length; i++) {
            strInputs[i] = sc.nextLine(); 
        }
        // 요소 5개를 입력받으면 반복문 종료
        sc.close();

        for (String str : strInputs) {
            System.out.println(str); // 5개 요소를 출력
        }
    }
}

4. 응용

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        while (sc.hasNextInt()) {
            int repeatCount = sc.nextInt();

            //  repeatCount 변수에 담은 이유 -> for문의 범위에 sc.next를 담으면 범위가 계속 변경되기 때문에 의도하지 않은 결과가 나타남
            for (int i = 0; i < repeatCount; i++) {

                System.out.print("박박 ");
            }
            System.out.println();
        }

        sc.close();

    }

}

 

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

[JAVA] 좋은 객체지향 설계의 5가지 원칙(SOLID)  (0) 2024.12.12
[JAVA] 메소드  (0) 2024.07.10
[JAVA] 제어문  (0) 2024.07.09
[JAVA] 타입 추론  (0) 2024.07.09
[JAVA] 배열  (0) 2024.07.09