본문 바로가기
CS/JAVA

Java Scanner 클래스의 hasNext 함수란? (feat. 백준 10951번)

 알고리즘 공부를 시작하기 위해 일단 간단한 입출력부터 되짚어보고 있는데, 솔직히 내가 자바를 써온 시간이 있으니 입출력문제에서 난관을 겪을 거라곤 생각을 못했다. 그리고 이런 문장으로 시작하는 글들이 으레 그렇듯 나는 10951번 문제를 풀다가 난관에 봉착했다. 

 

날 당황하게 만든 10951번 문제

 

어디서 입력이 끝날지 모르는데 프로그램 종료를 어떻게 시켜야 하지? 난 정말 모르겠다 싶은 일에 대해서는 멍청함을 인정하고 배움에 대한 수용이 빠른 편이다. 그래서 다른 분들의 게시글이나 질의응답란을 보고 자바의 경우 입력값이 들어오느냐 마느냐의 여부를 판단하는 hasNext라는 함수가 Scanner 클래스에 포함되어 있으니, 그걸 사용하면 된다고 한다. 

 

Scanner 클래스에 hasNext관련 함수는

 

 

 등등 있는데, hasNext뒤로 Boolean, Double, Int 등등 자료형이 붙은 건 입력된 값이 그 자료형일 경우에는 true값을 반환하고 아닐 경우 false를 반환하는 함수이다. 예를 들어 hasNextInt() 값을 출력할 때 정수가 들어오면 true, 입력이 없거나 정수 외의 값이 들어올 경우 false를 반환한다. 

 

 그래서 최종적으로 10951번은

 

제출한 코드

 

이 코드를 제출해서 맞았다. 어차피 정수 입력이 조건으로 걸려있으니까 hasNext대신 hasNextInt를 썼고, 입력이 있을 때까지만 while문을 반복하는 방식으로. 그래도 자바를 삼 년이상 썼는데 아직 입출력에 대해 모른다는 게 정말 부끄러웠다. 뭐 그래도 이번에 알았으니까 됐지... 

'CS > JAVA' 카테고리의 다른 글

next와 nextLine의 차이 (feat. 백준 10953번)  (0) 2020.07.12