>  기사  >  Java  >  왜 Scanner.nextDouble()에서 Double 값을 입력할 때 InputMismatchException이 발생합니까?

왜 Scanner.nextDouble()에서 Double 값을 입력할 때 InputMismatchException이 발생합니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-06 19:42:03984검색

Why Does Scanner.nextDouble() Throw an InputMismatchException When Inputting a Double Value?

이중 값 입력에서 InputMismatchException 오류 문제 해결

이중 값으로 작업할 때 Scanner.nextDouble()을 사용할 때 InputMismatchException이 발생하는 것이 일반적입니다. 입력을 읽습니다. 이 예외는 사용자가 소수점이 없는 문자열이나 정수와 같은 유효하지 않은 double 값을 입력할 때 발생합니다.

다음 코드를 고려하세요.

public double checkValueWithin(int min, int max) {
    double num;
    Scanner reader = new Scanner(System.in);
    num = reader.nextDouble(); // Throws InputMismatchException if input is invalid        
    while (num < min || num > max) {
        System.out.print("Invalid. Re-enter number: ");
        num = reader.nextDouble();
    }
    return num;
}

이 코드는 다음에 대한 사용자 입력의 유효성을 검사합니다. 지정된 범위 내의 이중 값. 그러나 사용자가 "1.2"(점을 소수 구분 기호로 사용)와 같은 값을 입력하면 InputMismatchException이 발생합니다.

이 문제를 해결하려면 대신 쉼표(,)를 사용해야 합니다. 이중 값을 입력할 때 소수 구분 기호로 점(.)을 사용합니다. 예를 들어 "1.2" 대신 "1,2"를 입력합니다. 또는 Scanner.next()와 같은 다른 메서드를 사용하고 입력을 이중으로 수동으로 구문 분석하여 발생할 수 있는 모든 예외를 처리할 수 있습니다.

위 내용은 왜 Scanner.nextDouble()에서 Double 값을 입력할 때 InputMismatchException이 발생합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.