행복을 담는 블로그

[Java] Scanner() 로 input 값 입력 받기 본문

BackEnd/Java

[Java] Scanner() 로 input 값 입력 받기

hyun0zin 2024. 7. 11. 16:38

백준 / SWEA 알고리즘 문제 풀 때, 입력값 받는 방법

프로그래머스로 문제를 풀 때와 다르게, 백준이나 SWEA를 통해 알고리즘 문제를 풀 경우, input 값을 직접 입력하고 받아와서 문제를 풀어야 하는 형태로 이루어져 있다.

java를 처음 배우는 입장에서 처음 알고리즘 문제를 풀고자 했을 때 이 부분부터 굉장히 막막해서 진도가 안 나갔다는...

Scanner를 먼저 import를 해와한다.

Scanner sc = new Scanner(System.in);

그 다음 값을 입력 받고 싶을 때, 다음과 같이 Scanner로 부터 변수 형태에 맞게 값을 입력할 수 있다.


1. 정수를 입력 받을 때는 nextInt() 를 사용한다.

int N = sc.nextInt();



2. 문자열 입력

next() v.s. nextLine()

  • 공통점 : 둘 다 문자열로 반환한다는 점.
  • 차이점 : 개행문자를 무시하느냐 아니냐 차이

✔ next()

  • 공백을 기준으로 한 단어 또는 한 문자씩 입력 받는다.
  • 개행 문자를 가져오지 않는다.
import java.util.Scanner;

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

        String str1 = sc.next();
        System.out.println(str1);

        sc.close();
    }
}


✔ nextLine()

  • 문자 또는 엔터를 치기 전까지의 문장 전체를 입력 받는다.
  • 버퍼에 입력된 개행 문자까지 다 가져온다.
import java.util.Scanner;

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

        String str2 = sc.next();
        System.out.println(str2);

        sc.close();
    }
}



3. 문자 "하나" 입력 받기

: 문자열 내에서 index 값으로 문자 하나의 값을 char 변수에 할당한다.

char singleChar = sc.next().charAt(0);



Scanner 종료하기

Scanner를 사용하였는데, 종료를 하지 않았다면, Resource leak: 'sc' is never closed 이와 같은 경고 메세지를 볼 수 있다.

Scanner를 종료해달라는 얘기로, 마지막에 close()를 해주면 된다!



import java.util.Scanner;

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

        int A = sc.nextInt();

        System.out.println(A);

        // 여러개의 정수를 입력 할 때,
        int B = sc.nextInt();
        int C = sc.nextInt();

        double D = sc.nextDouble();


        // 문자열을 입력 받을 때,
        String str1 = sc.next();
        String str2= sc.nextLine();

        // 문자 1개를 입력 받고 싶다.
//      char E = sc.next(); // 문자열로 반환됨 => string 이므로 char는 받을 수 없음
        char F = sc.next().charAt(0); // 인덱스로 하나씩 입력 받음

        // scanner를 마지막에 닫아주어야 한다. 
        sc.close();
    }
}