profile image

L o a d i n g . . .

article thumbnail image
Published 2023. 7. 10. 10:53

https://www.acmicpc.net/problem/10951


import java.util.Scanner;

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

        int numA = 0;
        int numB = 0;

        while (scanner.hasNextInt()) {
            numA = scanner.nextInt();
            numB = scanner.nextInt();

            System.out.println(numA + numB);
        }
        scanner.close();
    }
}

        Scanner scanner = new Scanner(System.in);

        int numA = 0;
        int numB = 0;

사용자로부터 정수를 입력 받기 위해 Scanner 를 사용하고, 각각의 입력된 수를 저장할 numA와 numB를 선언하고 0으로 초기화합니다.

 

        while (scanner.hasNextInt()) {
            numA = scanner.nextInt();
            numB = scanner.nextInt();

            System.out.println(numA + numB);
        }

A+B - 3 에서는 카운팅 할 숫자를 사용자가 입력하고 그 값을 for문에 사용했지만, 이 문제에서는 카운트 수를 사용자가 입력하지 않았습니다. 따라서 반복 횟수를 모르므로 for문이 아닌 while문을 사용합니다.

 

여기서 조건문에 뭘 넣어야하나 고민이 있을텐데, 저는 hasNextInt()를 사용했습니다.

hasNextInt()란?
Scanner 객체에 입력값이 int값일때만 true 반환

즉, 사용자가 숫자를 입력했을 때에만 numA와 numB에 값을 입력할 수 있고 (true이므로)
숫자를 입력하지 않으면 false 값이 들어와서 num A와 numB에 값을 입력할 수 없습니다. A+B를 할 수 없다는 거죠.

        scanner.close();
    }
}

사용자가 입력을 다 끝내고 while문이 종료되면 scanner 또한 종료 시켜서 할당된 자원을 다시 반환합니다.


여담

처음에 while문 조건에 뭘 넣어야할지 감이 잡히지 않아서 true를 넣었다가 NoSuchElement 결과가 나왔습니다.

런타임 에러 발생

 

왜 이런 에러가 나타나는걸까? 해서 찾아봤더니 친절하게 알려주더라고요.

NoSuchElement

 

밑에 예시를 보니 어떻게 풀어야할지 감이 와서 고쳤더니 바로 통과 되었습니다. :)


출처

1. https://docs.oracle.com/en/java/javase/15/docs/api/java.base/java/util/Scanner.html#hasNextInt() 

2. https://nanarin.tistory.com/29

3. https://help.acmicpc.net/judge/rte/NoSuchElement

 

'백준 > Java' 카테고리의 다른 글

[백준][Java] 10871 - X보다 작은 수  (0) 2023.07.20
[백준][Java] 10952 - A+B - 5  (0) 2023.07.11
[백준][Java] 10950 - A+B - 3  (0) 2023.07.10
[백준][Java] 10872 - 팩토리얼  (0) 2023.07.06
[백준][Java] 2753 - 윤년  (0) 2023.07.06
복사했습니다!