Java에서 스캐너를 사용하는 동안 이러한 요소 예외 없음

Sheeraz Gul 2023년10월12일
Java에서 스캐너를 사용하는 동안 이러한 요소 예외 없음

이 튜토리얼은 Java에서 스캐너를 사용하는 동안 NoSuchElementException 오류를 해결하는 방법을 보여줍니다.

Java에서 스캐너를 사용하는 동안 이러한 요소 예외 없음

Scanner 클래스는 Java 프로그램에서 사용자 입력을 얻는 데 사용됩니다. next(), nextInt() 등과 같은 여러 유틸리티 메서드를 사용합니다.

이러한 메서드로 작업할 때 스캐너는 Java에서 NoSuchElementException 오류를 발생시킬 수 있습니다. 이러한 예외에 대한 이유는 다음과 같습니다.

  1. 사용자 입력을 받기 위한 두 개의 스캐너 개체가 있다고 가정합니다. 하나의 스캐너를 닫고 다른 스캐너에서 입력을 받으면 NoSuchElementExcpetion이 발생합니다. 하나의 스캐너를 닫으면 입력 스트림이 닫히기 때문입니다. 이것이 close() 메소드가 System.in 입력 스트림을 닫기 때문에 다른 스캐너가 동일한 입력 스트림에서 읽을 수 없는 이유입니다.

    다음은 예입니다.

    package delftstack;
    
    import java.util.*;
    
    public class Example {
      public static void main(String args[]) {
        String DemoString = "Hello, This is delftstack.com";
    
        Scanner DemoScanner1 = new Scanner(System.in);
        Scanner DemoScanner2 = new Scanner(System.in);
    
        DemoScanner1.close();
        DemoScanner2.next();
      }
    }
    

    위의 코드는 NoSuchElementException을 발생시킵니다. 출력 참조:

    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 delftstack.Example.main(Example.java:13)
    

    이 문제를 해결하기 위해 하나의 스캐너만 사용할 수 있습니다. 이는 하나의 스캐너가 한 방법에 사용되고 다른 스캐너가 다른 방법에 사용되는 경우에도 적용됩니다.

    close() 메서드는 모든 입력 스트림을 닫습니다.

  2. Scanner를 사용하는 동안 라인을 읽고 있는데 읽을 라인이 없으면 NoSuchElementException이 발생합니다. 예를 참조하십시오:

    package delftstack;
    
    import java.util.*;
    
    public class Example {
      public static void main(String args[]) {
        String DemoString = "Hello, This is delftstack.com";
    
        Scanner DemoScanner1 = new Scanner(DemoString);
    
        System.out.println(DemoScanner1.nextLine());
        System.out.println(DemoScanner1.nextLine());
      }
    }
    

    이 문제를 해결하기 위해 hasNextLine()을 사용하여 스캐너에 다음 줄이 있는지 확인합니다. 스캐너에 다음 줄이 있으면 true를 반환합니다. 그렇지 않으면 false를 반환합니다.

    예를 참조하십시오:

    package delftstack;
    
    import java.util.*;
    
    public class Example {
      public static void main(String args[]) {
        String DemoString = "Hello, This is delftstack.com";
    
        Scanner DemoScanner1 = new Scanner(DemoString);
        while (DemoScanner1.hasNextLine()) {
          System.out.println(DemoScanner1.nextLine());
        }
      }
    }
    

    이 코드의 출력은 다음과 같습니다.

    Hello, This is delftstack.com
    
작가: Sheeraz Gul
Sheeraz Gul avatar Sheeraz Gul avatar

Sheeraz is a Doctorate fellow in Computer Science at Northwestern Polytechnical University, Xian, China. He has 7 years of Software Development experience in AI, Web, Database, and Desktop technologies. He writes tutorials in Java, PHP, Python, GoLang, R, etc., to help beginners learn the field of Computer Science.

LinkedIn Facebook

관련 문장 - Java Error