신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

JAVA에서는 입력받을때 어떤 객체를 사용할까요?

 

BufferedInputStream 또는 Scanner 가 있습니다. 이번 글에서는 Scanner에 대해서 알아보겠습니다.

 

    Scanner 

 

import java.util.Scanner;

Scanner는 java.util 에 있는 라이브러리 입니다. 그래서 코드 상단에 import java.util.Scanner 를 붙여줘야 사용 할 수 있습니다.

 

입력을 하셨다면, 이제 사용할 일만 남았습니다.

 

Scanner sc = new Scanner(System.in);

 

Scanner 클래스를 먼저 선언해주는데, 선언해줄때 argument(인자)로 System.in 을 넣어줘야 합니다.

 

 

Scanner 클래스에는 여러 Method 가 존재합니다. 예를들어, next(), nextLine(), nextInt(), nextDouble(), nextLong(), nextShort() 등등...

가장 많이 사용하는 함수를 알아보겠습니다.

 

1. next()

import java.util.Scanner;
 
public class Ex01 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.next();
        System.out.println(input);
    }
}​

next()는 문자열을 입력 받을때 사용 합니다.

 코드를 실행하게 됐을때, 문자열 변수 input에 입력한 문자열 값이 들어가게됩니다.

만약 hello world라고 입력을 하게 되면, 콘솔창에는 System.out.println(input); 에 의해 hello 라는 글자가 출력되게 됩니다.

 

 

 

System.out.println(); 알아보러 가기

>> 2017/12/08 - [Language/JAVA] - JAVA :: print와 println

 

 

 

근데 예상한 결과가 아닐수도 있습니다. 분명 hello world  라는 값을 넣었기 때문에 hello world라고 나와야 할거 같은데...

왜 hello가 나올까요?

 

 

next() method(함수)는 제가 입력하는 값에 공백이 나오기 전까지만 값을 입력 받습니다. 그래서 hello 다음에 나오는 공백에 의해 뒤에 world 부분은 무시하게 됩니다.

 

 

그렇다면 뒤에 world까지 입력을 받고 싶다면 어떻게 해야 할까요?

 

 

2. nextLine()

 

앞서 알아본 next() method 로는 원하는 값을 입력 받지 못했습니다.

 

import java.util.Scanner;
 
public class Ex01 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        System.out.println(input);
    }
}

nextLine()은 next()와는 다르게 개행문자(\n)가 나오기 전까지 값을 입력 받습니다. 그래서 hello world하고 엔터를 누르는 순간

엔터를 입력하기 전(즉, world 까지)까지 값을 입력받습니다.

 

예를들어, hello world를 입력했을때, 문자열 변수(String) input에는 hello world 라는 값이 들어가게되고, 그 값이 출력되는것을 알 수 있습니다.

 

 

이렇게 자주 사용하는 문자열 입력 next() 와 nextLine()을 알아보았습니다.

이번에는 정수형, 실수형 입력에 대해 알아보겠습니다.

 

 

3. nextInt(), nextLong()

 

nextInt()는 method 이름만 봐도 무슨 역할을 하는지 감이 오실겁니다.

import java.util.Scanner;
 
public class Ex01 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num1 = sc.nextInt();
        int num2 = sc.nextInt();
        System.out.print(num1 + "/" + num2);
    }
}

 

바로 정수형 입력을 받을때 사용을 하게 되는데, 띄어쓰기나 개행문자가 나올때까지 값을 받습니다.

 

위 코드를 보면 정수형 변수(int) num1과 num2 총 2개의 변수에 값을 받게 됩니다.

 

 

예를들어, 입력 값으로

 

2 3

 

이라는 값을 준다면 num1에는 2, num2에는 3 이라는 값이 들어갑니다.

그래서 출력값은 2/3이 나오게 됩니다.

 

 

이번에는 띄어쓰기가 아닌 개행문자(엔터)를 이용한다면

 

2

3

 

이라는 값을 주어도 똑같이 num1 = 2, num2 = 3이 들어가게 되고 결과 또한 2/3 으로 값이 같습니다.

import java.util.Scanner;
 
public class Ex01 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Long num1 = sc.nextLong();
        int num2 = sc.nextInt();
        System.out.print(num1 + "/" + num2);
    }
}

이번에는 nextLong() 에 대해 알아보겠습니다.

nextLong() 은 nextInt()와 같이 정수형 입력을 받을때 사용합니다. 그렇다면 차이점은 무엇일까요?

눈치가 빠른 분들은 이미 아실거 같습니다. nextLong() 은 long 변수를 입력 받을때 사용합니다.

 

int는 4bytes(32bits)까지 값을 받을 수 있기 때문에 2^32 => 10^(3*3) => 10^9 (2^10 은 1024로 대략 1000)

대략 1000,000,000 까지 값을 받을 수 있습니다.

 

long 의 경우는 8bytes(64bits)까지 받을 수 있어서 2^64 => 10^(3*6) => 10^18 

대략 1000,000,000,000,000,000 까지 입력을 받을 수 있습니다.

 

만약 nextInt()에 10,000,000,000(10^10) 값을 넣어준다면 에러가 생기는 것을 알 수 있습니다. 

 

 

 

4. nextDouble(), nextFloat()

 

nextDouble()과 nextFloat()는 실수형을 받기 위한 method 입니다.

import java.util.Scanner;
 
public class Ex01 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        double num1 = sc.nextDouble();
        float num2 = sc.nextFloat();
        System.out.print(num1 + "/" + num2);
    }
}

위에서 알아본것과 마찬가지로 nextDouble() 은 double 타입 변수, nextFloat()는 float 타입 변수 입력 받을때 사용합니다.

 

 

이번 글에서 next, nextLine, nextInt, nextLong, nextDouble, nextFloat에 대해 알아보았습니다.

 

사실 Scanner에는 입력받는것 뿐 아니라 다른 method 또한 많습니다.

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기