java 공부/코딩은 처음이라 with 자바

#자바_3. 데이터 입출력_자바 언어 기본

1000씨 2024. 3. 6. 17:44

사용자에게서 입력받은 값을 변수에 저장하여 연산 등에 사용하고

다시 그 결과를 출력하는 기능은 매우 기본적인 코딩이다.

 

c언어와 달리 자바에서는 객체라는 것을 사용하고 있고, 입력을 받을 때 

Scanner 라는 클래스를 사용하게 된다. 

 

숫자를 입력받을 때는 이 Scanner라는 클래스의 nextInt()라는 메서드를 호출한다.

이처럼 받아오는 데이터 타입에 따라 각기 다른 메서드를 사용하게 되는데,

메서드 데이터 타입
nextInt() int
nextDouble() double
nextBoolean() boolean
nextByte() byte
nextFloat() float
nextLong() long
nextShort() short

 

이처럼 필요에 따라 다르게 사용하면 된다. 

 

간단한 예제를 통해 알아보자.

 

        Scanner s = new Scanner(System.in);

        System.out.println("첫 번째 숫자를 입력하세요. ");
        int first = s.nextInt();

        System.out.println("두 번째 숫자를 입력하세요. ");
        double second = s.nextDouble();

        double added = first + second;
        
        System.out.println("두 숫자의 합은 " + added + " 입니다.");

 

이 예제는 정수와 실수를 받아와서 더하는 간단한 계산기이다. 

맨 위에서 Scanner 클래스를 지정해준다.

 

그리고 아래에서 정수를 입력받을 때는, nextInt()를 사용해주고, 실수를 입력받을 때는  nextDouble()을 사용한다.

 

그럼 이렇게 두 입력값을 더한 결과가 보여진다. 

 

그렇다면 문자열을 받아올 때는 어떻게 할까?

        System.out.println("이름을 입력하세요. ");

        String name = s.next();

        System.out.println("이름은 " + name + " 입니다.");

 

문자열을 입력받을 때는 두 가지 사용이 가능하다.

nextLine()next()이다.

근데 이거 문제가 있었다.

 

nextLine()

위의 정수와 실수를 받아오는 예제 아래에 nextLine()을 사용하여

문자열을 입력받으려고 했더니 println만 찍히고 종료되었다.

 

그래서 위의 예제를 주석처리하고 nextLine()만 사용하였더니 원했던대로 실행이 되었는데,

그 이유는 실수를 받아오면서 개행문자(enter)를 치면 개행문자를 nextLine()에서 받아와서

name 변수에 저장한다는 것이다. 

 

이를 해결하기 위해서는 개행문자를 먼저 소비해주는 


s.nextLine();

 

이런 부분을 넣어주어야하는데 매우 귀찮기 때문에 이런 문제가 생기지 않는 next() 를 사용하는 것이 좋겠다.