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
결과가 나왔습니다.
왜 이런 에러가 나타나는걸까? 해서 찾아봤더니 친절하게 알려주더라고요.
밑에 예시를 보니 어떻게 풀어야할지 감이 와서 고쳤더니 바로 통과 되었습니다. :)
출처
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 |