코딩 스쿨 Java

언어선택 : HTMLCSSJAVAJAVASCRIPTMYSQLSQL PHP

Java Scanner Methods

자바에서의 Scanner 메서드 (Java Scanner Methods)

Scanner 클래스는 자바에서 사용자 입력을 받거나 파일, 문자열 등에서 데이터를 읽어올 때 사용되는 유틸리티 클래스입니다.

.util.Scanner 패키지에 속하며, 키보드파일 등의 입력 소스로부터 데이터를 읽을 수 있습니다. Scanner는 다양한 데이터 타입을 읽을 수 있는 여러 메서드를 제공하며, 기본적으로 공백(스페이스, 탭, 줄바꿈)을 기준으로 입력을 분리하여 처리합니다.

Scanner 생성

Scanner 클래스는 입력 소스(키보드, 파일 등)를 지정하여 생성할 수 있습니다. **System.in**을 사용하면 키보드 입력을 처리할 수 있고, 파일이나 문자열을 입력 소스로 지정할 수도 있습니다.

Scanner 생성 예시

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        // 키보드 입력을 처리하는 Scanner 생성
        Scanner scanner = new Scanner(System.in);

        // 사용자로부터 문자열 입력 받기
        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();

        System.out.println("입력된 이름: " + name);
    }
}

설명:

  • new Scanner(System.in): 키보드 입력을 처리하는 Scanner 객체 생성.
  • nextLine(): 사용자가 입력한 한 줄의 문자열을 읽어들임.

주요 Scanner 메서드

1. next(): 단어(문자열) 입력 받기

next() 메서드는 입력된 첫 번째 단어를 읽어들입니다. **공백(스페이스, 탭, 줄바꿈)**을 기준으로 단어를 분리합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 단어 입력 받기
        System.out.print("단어를 입력하세요: ");
        String word = scanner.next();

        System.out.println("입력된 단어: " + word);
    }
}

설명:

  • next()첫 번째 단어만 읽어오며, 공백 이후의 입력은 무시합니다.

2. nextLine(): 한 줄 입력 받기

nextLine() 메서드는 입력된 한 줄을 읽어들입니다. 줄바꿈(Enter)을 기준으로 입력을 분리합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 한 줄 입력 받기
        System.out.print("한 줄을 입력하세요: ");
        String line = scanner.nextLine();

        System.out.println("입력된 줄: " + line);
    }
}

설명:

  • nextLine()은 줄 전체를 읽어들입니다. 공백을 포함한 모든 문자를 읽고 줄바꿈이 입력되면 종료합니다.

3. nextInt(): 정수 입력 받기

nextInt() 메서드는 정수형 데이터를 입력받습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 정수 입력 받기
        System.out.print("정수를 입력하세요: ");
        int number = scanner.nextInt();

        System.out.println("입력된 정수: " + number);
    }
}

설명:

  • nextInt()정수형 값만 읽어들입니다.
  • 만약 정수가 아닌 값을 입력하면 InputMismatchException 예외가 발생합니다.

4. nextDouble(): 실수 입력 받기

nextDouble() 메서드는 실수형(double) 데이터를 입력받습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 실수 입력 받기
        System.out.print("실수를 입력하세요: ");
        double value = scanner.nextDouble();

        System.out.println("입력된 실수: " + value);
    }
}

설명:

  • nextDouble()소수점을 포함한 실수형 데이터를 입력받습니다.
  • 마찬가지로 실수가 아닌 값을 입력하면 InputMismatchException이 발생합니다.

5. nextBoolean(): 불리언 값 입력 받기

nextBoolean() 메서드는 true 또는 false 값을 입력받습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 불리언 값 입력 받기
        System.out.print("참 또는 거짓을 입력하세요(true/false): ");
        boolean boolValue = scanner.nextBoolean();

        System.out.println("입력된 값: " + boolValue);
    }
}

설명:

  • nextBoolean()true 또는 false 문자열만 인식하며, 다른 값을 입력하면 예외가 발생합니다.

6. hasNext(): 다음 입력이 있는지 확인

hasNext() 메서드는 입력 소스에서 다음 입력이 존재하는지를 확인합니다. 만약 입력이 더 이상 없으면 false를 반환합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 입력이 있는 동안 계속 단어 출력
        while (scanner.hasNext()) {
            String word = scanner.next();
            System.out.println("입력된 단어: " + word);
        }
    }
}

설명:

  • hasNext()는 입력 소스에 다음 입력이 있는지 여부를 확인하여 반복 처리할 때 유용합니다.

7. hasNextInt(), hasNextDouble(): 특정 타입의 입력이 있는지 확인

  • hasNextInt(): 정수형 데이터가 있는지 확인합니다.
  • hasNextDouble(): 실수형 데이터가 있는지 확인합니다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // 정수 입력 여부 확인
        System.out.print("정수를 입력하세요: ");
        if (scanner.hasNextInt()) {
            int number = scanner.nextInt();
            System.out.println("입력된 정수: " + number);
        } else {
            System.out.println("정수가 아닙니다.");
        }
    }
}

설명:

  • 입력된 데이터가 정수 또는 실수인지 확인한 후 처리할 수 있습니다.

8. useDelimiter(): 사용자 정의 구분자 설정

useDelimiter() 메서드는 기본 구분자(공백, 탭, 줄바꿈) 대신 사용자 정의 구분자를 설정하여 데이터를 입력받을 수 있습니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        String input = "Apple,Banana,Orange";
        Scanner scanner = new Scanner(input);

        // 구분자를 쉼표(,)로 설정
        scanner.useDelimiter(",");

        // 각 항목 출력
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
    }
}

출력:

Apple
Banana
Orange

설명:

  • useDelimiter() 메서드를 사용하면 사용자 정의 구분자를 통해 데이터를 분리할 수 있습니다.

9. close(): Scanner 닫기

close() 메서드는 Scanner 객체를 닫고 더 이상 입력을 받을 수 없도록 합니다. 자원 관리를 위해 필요할 때 Scanner를 닫아야 합니다.

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("이름을 입력하세요: ");
        String name = scanner.nextLine();

        // Scanner 객체 닫기
        scanner.close();

        System.out.println("입력된 이름: " + name);
    }
}

설명:

  • close() 메서드는 더 이상 입력을 받지 않도록 Scanner종료합니다. 주로 파일 입력을 다룰 때 자원을 반환하기 위해 사용합니다.

10. nextLong(), nextFloat(): 다양한 숫자형 입력 받기

Scannerlong, float 등의 숫자형 데이터도 입력받을 수 있는 메서드를 제공합니다.

  • nextLong(): long 타입의 정수를 입력받습니다.
  • nextFloat(): float 타입의 실수를 입력받습니다.
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        // long 타입 입력 받기
        System.out.print("

긴 정수를 입력하세요: ");
        long longValue = scanner.nextLong();
        System.out.println("입력된 긴 정수: " + longValue);

        // float 타입 입력 받기
        System.out.print("실수를 입력하세요: ");
        float floatValue = scanner.nextFloat();
        System.out.println("입력된 실수: " + floatValue);
    }
}

요약

자바의 Scanner 클래스는 입력 소스로부터 다양한 데이터 타입을 쉽게 읽을 수 있는 메서드들을 제공합니다. 주요 메서드는 다음과 같습니다:

  • next(): 한 단어(공백 전까지)를 입력받음
  • nextLine(): 한 줄 전체를 입력받음
  • nextInt(), nextDouble(), nextBoolean(): 정수, 실수, 불리언 값 입력받음
  • hasNext(), hasNextInt(): 다음 입력이 있는지 확인
  • useDelimiter(): 사용자 정의 구분자를 설정
  • close(): 입력 스트림을 닫음

이러한 메서드들을 활용하여 키보드, 파일, 문자열 등 다양한 입력 소스로부터 데이터를 쉽게 처리할 수 있습니다.


copyright ⓒ 스타트코딩 all rights reserved.
이메일 : startcodingim@gamil.com