>Java >java지도 시간 >`Scanner.nextDouble()`에서 `InputMismatchException`이 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?

`Scanner.nextDouble()`에서 `InputMismatchException`이 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?

Linda Hamilton
Linda Hamilton원래의
2024-12-11 05:31:13355검색

Why Does `Scanner.nextDouble()` Throw an `InputMismatchException`, and How Can I Fix It?

Scanner double Value InputMismatchException

Java 프로그래머는 nextDouble() 메서드를 사용하여 이중 값을 스캔하려고 할 때 일반적으로 InputMismatchException이 발생합니다. 이 예외는 예상 데이터 형식과 제공된 실제 입력 사이의 불일치를 나타냅니다.

발생 이유

InputMismatchException은 입력이 예상 숫자와 일치하지 않을 때 발생합니다. 체재. 주어진 코드 조각에서 스캐너는 로케일로 명시적으로 구성되지 않았습니다. 이로 인해 시스템의 기본 로캘이 사용되며 소수 구분 기호가 다를 수 있습니다(예: 일부 유럽 국가에서는 "." 대신 ","). 스캐너가 입력을 해석할 때 쉼표로 구분된 소수점을 예상하지만 대신 점(.)이 나타납니다.

문제를 우회하는 방법

이 문제를 해결하려면 문제가 발생하면 스캐너의 로케일을 예상되는 소수 구분 기호를 사용하는 로케일로 명시적으로 설정할 수 있습니다. 이렇게 하면 스캐너가 지정된 로케일을 기반으로 입력을 올바르게 해석할 수 있습니다.

해결 방법

Scanner scanner = new Scanner(System.in).useLocale(Locale.US);

Locale.US를 사용하면 스캐너가 다음을 사용하도록 구성됩니다. 점 "."을 기대하는 로케일 소수 구분 기호로 사용됩니다. 이는 예상한 입력 형식(5.1)과 일치하며 InputMismatchException을 방지합니다.

위 내용은 `Scanner.nextDouble()`에서 `InputMismatchException`이 발생하는 이유는 무엇이며 어떻게 해결할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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