>Java >java지도 시간 >Java 스캐너로 잘못된 정수 입력을 적절하게 처리하는 방법은 무엇입니까?

Java 스캐너로 잘못된 정수 입력을 적절하게 처리하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-18 07:07:10235검색

How to Gracefully Handle Invalid Integer Input with Java's Scanner?

스캐너를 사용하여 잘못된 입력을 처리하는 방법

스캐너를 사용하여 사용자 입력을 수행하는 동안 숫자가 아닌 문자와 같은 잘못된 입력을 처리하는 것은 프로그램 견고성에 매우 중요합니다. 이 문제를 해결하기 위한 솔루션을 살펴보겠습니다.

다음 코드 조각을 고려하세요.

Scanner kb = new Scanner(System.in);
int num1;
int num2 = 0;

System.out.print("Enter number 1: ");
num1 = kb.nextInt();

while (num2 < num1) {
    System.out.print("Enter number 2: ");
    num2 = kb.nextInt();
}

이 코드는 사용자로부터 두 개의 정수를 얻어 두 번째 숫자(num2)가 다음과 같도록 하는 것을 목표로 합니다. 첫 번째(num1)보다 큽니다. 그러나 두 가지 제한 사항이 있습니다.

  1. 숫자가 아닌 입력을 확인하지 않으므로 사용자가 숫자 대신 문자를 입력하면 프로그램이 중단됩니다.
  2. while 조건이 항상 true이기 때문에 num2에 유효한 입력이 입력된 후에도 루프가 계속됩니다.

이러한 문제를 해결하기 위해 다음을 활용할 수 있습니다. Scanner.hasNextInt() 메서드는 입력의 다음 토큰이 정수로 해석될 수 있는지 결정합니다.

다음 코드 조각에는 이러한 개선 사항이 포함되어 있습니다.

Scanner sc = new Scanner(System.in);
System.out.print("Enter number 1: ");
while (!sc.hasNextInt()) sc.next();
int num1 = sc.nextInt();
int num2;
System.out.print("Enter number 2: ");
do {
    while (!sc.hasNextInt()) sc.next();
    num2 = sc.nextInt();
} while (num2 < num1);
System.out.println(num1 + " " + num2);

유효한 토큰인지 확인하여 hasNextInt()를 사용하여 입력하고 유효하지 않은 문자를 무시하면 프로그램은 숫자가 아닌 입력을 정상적으로 처리합니다. 또한 do-while 루프는 두 번째 숫자가 첫 번째 숫자보다 큰지 확인하여 유효한 입력을 얻은 후에 루프가 계속되는 것을 방지합니다.

위 내용은 Java 스캐너로 잘못된 정수 입력을 적절하게 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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