Java/시행착오

[java] Scanner 런타임 오류

BuSiSi 2024. 9. 14. 07:39

1. 문제 코드

import java.util.Scanner;

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

        int a, cnt;

        cnt = 0;

        for(;;){
            a = sc.nextInt(); // 오류

            if(cnt == 3){
                break;
            }

            else if(a % 2 == 0){
                System.out.println(a / 2);
                cnt ++;
            }

            else{
                continue;
            }

        }
    }
}

 

 

2. 에러메세지

 

Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Scanner.java:862)
at java.util.Scanner.next(Scanner.java:1485)
at java.util.Scanner.nextInt(Scanner.java:2117)
at java.util.Scanner.nextInt(Scanner.java:2076)
at Main.main(Main.java:12)

12
입력 받으러 갔는데 입력 받을 값이 없어서 발생한 오류

 

3. 해결 코드

import java.util.Scanner;

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

        int a, cnt;

        cnt = 0;

        for(;;){
            if(cnt == 3){
                break;
            }
            else{
                a = sc.nextInt(); // 위치 수정
                
                if(a % 2 == 0){
                System.out.println(a / 2);
                cnt ++;
                }
            }

        }
    }
}

 

문제 코드에서 cnt가 3일 경우에도 a 값을 한 번 더 받으려고 해서 발생한 오류로 생각 됨.

 

a를 입력받는 위치를 cnt가 3인 아닌 경우로 수정하여 해결

 

'Java > 시행착오' 카테고리의 다른 글

[java] do while 문 실험  (0) 2024.09.13