자바 초보 질문입니다. NoSuchElementException

조회수 1921회
package two.doomsday;

import java.util.Scanner;

public class DoomsdayMain {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int year=1; int mon=1; int day=1;
        int dayOfWeek=2;

        //날짜 입력 
        do {
            System.out.printf("날짜 입력(YYYY/MM/DD): ");
            sc = new Scanner(sc.next()).useDelimiter("\\s*/\\s*");
            year = sc.nextInt();
            mon = sc.nextInt();
            day = sc.nextInt();
        } while (isDateValid(year,mon,day,isLeapYear(year))==false);

날짜를 잘못 입력했을 때 다시 입력하게 만들고 싶어서 do~while문을 썼는데 실행하고 나서 날짜를 2020년 2월 30일이라고 틀리게 입력해보니 이렇게 NoSuchElementException이 뜹니다.

날짜 입력(YYYY/MM/DD): 2020/02/30
날짜 입력(YYYY/MM/DD): Exception in thread "main" java.util.NoSuchElementException
    at java.base/java.util.Scanner.throwFor(Scanner.java:937)
    at java.base/java.util.Scanner.next(Scanner.java:1478)
    at ProblemSolvingHomework/two.doomsday.DoomsdayMain.main(DoomsdayMain.java:15)

스캐너가 문제인 것 같은데 어떻게 해결해야 할까요? 자바 배우기 시작한 지 2주도 채 되지 않아서, 쉽게 설명해 주시면 감사하겠습니다.

  • 참고로 String scan = sc.next(); 를 사용해서 sc.next()를 변수 안에 넣고 대체해봤더니 날짜입력하라는 문구가 무한루프로 떠버렸습니다 알 수 없는 사용자 2020.3.30 21:17
  • 일단 NoSuchElementException은 보통 scanner가 닫혔거나 더 이상 입력된게 없는데도 next()를 호출할 때 발생합니다. 그런데 제가 직접 이 코드를 실행하면 해당 예외가 발생하지 않네요. 전체 소스를 다시 올려보시죠. 편집요청빌런 2020.3.31 09:32

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)