JAVA를 다시 공부한다는 마음으로 알고리즘 문제를 쉬운 문제부터 천천히 풀고 있다. 그러다가 마주친 백준 11718번 문제는 예상치 못한 곳에서 난관을 마주한 기분이었다.
이전 문제에서는 몇 번 반복할 지 횟수를 알려줘서 그대로 반복문을 써서 풀었는데, 이번에는 몇 번 입력할 건지 말하지 않아서 찾아보다 JAVA Scanner의 매서드 중 하나인 hasNext()를 사용해서 풀이할 수 있었다
Scanner 클래스에서 사용되는 메서드 중 하나로, 입력 소스(주로 표준 입력, 파일 또는 문자열)에서 다음 입력 토큰(일련의 문자열)이 있는지 여부를 확인하기 위해 사용된다.
hasNext()는 주로 반복적인 일을 할 때 주로 사용된다. 예시 코드 중 하나는 다음과 같다
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int sum = 0;
while (scanner.hasNextInt()) {
int num = scanner.nextInt();
sum += num;
}
System.out.println("입력된 숫자의 합계: " + sum);
}
}
여기서 hasNextInt() 메서드는 입력된 값이 정수인지 여부를 확인하고, hasNextInt()가 true를 반환하는 동안만 입력된 값을 읽어와 합계를 계산한다. 즉, 사용자가 더 이상 정수를 입력하지 않으면 hasNextInt()가 false를 반환하여 프로그램은 종료된다.
해당 백준 문제는 아래와 같이 제출하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()){
System.out.println(sc.nextLine());
}
}
}