입력값이 정수인지 확인하기

JavaBeginner
지금 연습하기

소개

Java 애플리케이션을 개발할 때, 사용자 입력을 검증하는 것은 매우 중요한 작업입니다. 이 랩에서는 주어진 입력이 유효한 정수인지 확인하는 세 가지 일반적인 방법을 보여줍니다.

  1. Integer.parseInt() 메서드 사용
  2. Scanner.hasNextInt() 메서드 사용
  3. Character.isDigit() 메서드 사용

각 방법을 단계별로 구현하고, 그 차이점과 사용 사례를 이해할 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 고급 레벨의 실험이며 완료율은 17%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Java 프로젝트 설정

정수 검증 메서드를 구현하기 위해 새로운 Java 파일을 만들어 보겠습니다.

  1. 터미널을 열고 /home/labex/project 디렉토리에 있는지 확인합니다:
pwd
  1. CheckInputInteger.java라는 새 Java 파일을 생성합니다:
touch CheckInputInteger.java
  1. 선호하는 텍스트 편집기에서 파일을 열고 기본 클래스 구조를 추가합니다:
import java.util.Scanner;

public class CheckInputInteger {
    public static void main(String[] args) {
        // 여기에 메서드 호출을 추가할 것입니다.
    }
}
Screenshot of the Java file with basic class structure

Integer.parseInt() 를 사용한 정수 검증 구현

Integer.parseInt() 메서드는 문자열을 정수로 변환하려고 시도합니다. 변환에 실패하면 NumberFormatException을 발생시킵니다. 이 동작을 사용하여 정수를 검증할 수 있습니다.

  1. 다음 메서드를 CheckInputInteger.java 파일에 추가합니다:
// CheckInputInteger 클래스 내부에 이 메서드를 추가합니다.
public static void checkUsingParseInt(String input) {
    try {
        // 입력 문자열을 정수로 파싱을 시도합니다.
        Integer.parseInt(input);
        System.out.println(input + " is a valid integer");
    } catch (NumberFormatException e) {
        // 파싱에 실패하면 입력은 유효한 정수가 아닙니다.
        System.out.println(input + " is not a valid integer");
    }
}
  1. 이 구현을 테스트하기 위해 main 메서드를 업데이트합니다:
// 이 구현을 테스트하기 위해 main 메서드를 수정합니다.
public static void main(String[] args) {
    // 테스트 케이스
    checkUsingParseInt("123");    // 유효한 정수
    checkUsingParseInt("12.34");  // 정수가 아님
    checkUsingParseInt("abc");    // 정수가 아님
}
  1. 파일은 다음과 같아야 합니다:
import java.util.Scanner;

public class CheckInputInteger {
    // 클래스 내부에 메서드를 정의합니다.
    public static void checkUsingParseInt(String input) {
        try {
            // 입력 문자열을 정수로 파싱을 시도합니다.
            Integer.parseInt(input);
            System.out.println(input + " is a valid integer");
        } catch (NumberFormatException e) {
            // 파싱에 실패하면 입력은 유효한 정수가 아닙니다.
            System.out.println(input + " is not a valid integer");
        }
    }

    public static void main(String[] args) {
        // 테스트 케이스
        checkUsingParseInt("123");    // 유효한 정수
        checkUsingParseInt("12.34");  // 정수가 아님
        checkUsingParseInt("abc");    // 정수가 아님
    }
}
  1. 프로그램을 컴파일하고 실행합니다:
javac CheckInputInteger.java
java CheckInputInteger

다음 출력을 볼 수 있습니다:

123 is a valid integer
12.34 is not a valid integer
abc is not a valid integer
Output of the Java program showing valid and invalid integer inputs

Scanner.hasNextInt() 를 사용한 정수 검증 구현

Scanner 클래스는 입력의 다음 토큰을 정수로 해석할 수 있는지 확인하는 hasNextInt() 메서드를 제공합니다. 이 메서드는 콘솔에서 사용자 입력을 읽을 때 특히 유용합니다.

  1. CheckInputInteger 클래스 내의 CheckInputInteger.java 파일에 다음 메서드를 추가합니다:
public static void checkUsingScanner(String input) {
    Scanner scanner = new Scanner(input);
    if (scanner.hasNextInt()) {
        System.out.println(input + " is a valid integer");
    } else {
        System.out.println(input + " is not a valid integer");
    }
    scanner.close();
}
  1. 이 구현에 대한 테스트를 포함하도록 main 메서드를 업데이트합니다:
public static void main(String[] args) {
    // 이전 테스트 케이스
    checkUsingParseInt("123");
    checkUsingParseInt("12.34");
    checkUsingParseInt("abc");

    // 새로운 테스트 케이스
    checkUsingScanner("456");     // 유효한 정수
    checkUsingScanner("-789");    // 유효한 정수
    checkUsingScanner("12.34");   // 정수가 아님
}
  1. 프로그램을 컴파일하고 실행합니다:
javac CheckInputInteger.java
java CheckInputInteger

다음 출력을 볼 수 있습니다:

456 is a valid integer
-789 is a valid integer
12.34 is not a valid integer

이는 Scanner.hasNextInt() 메서드가 유효하고 유효하지 않은 정수를 올바르게 식별함을 보여줍니다.

Output of Scanner hasNextInt method

Character.isDigit() 를 사용한 정수 검증 구현

Character.isDigit() 메서드는 문자가 숫자 자릿수인지 확인합니다. 입력 문자열의 각 문자를 검사하여 정수를 검증하는 데 사용할 수 있습니다.

  1. CheckInputInteger.java 파일에 다음 메서드를 추가합니다:
public static void checkUsingIsDigit(String input) {
    boolean isValid = true;

    // 첫 번째 문자를 확인하여 음수를 처리합니다.
    int startIndex = (input.charAt(0) == '-') ? 1 : 0;

    // 각 문자를 확인합니다.
    for (int i = startIndex; i < input.length(); i++) {
        if (!Character.isDigit(input.charAt(i))) {
            isValid = false;
            break;
        }
    }

    if (isValid) {
        System.out.println(input + " is a valid integer");
    } else {
        System.out.println(input + " is not a valid integer");
    }
}
  1. 최종 테스트 케이스로 main 메서드를 업데이트합니다:
public static void main(String[] args) {
    // 이전 테스트 케이스
    checkUsingParseInt("123");
    checkUsingParseInt("12.34");
    checkUsingParseInt("abc");

    checkUsingScanner("456");
    checkUsingScanner("-789");
    checkUsingScanner("12.34");

    // 새로운 테스트 케이스
    checkUsingIsDigit("789");     // 유효한 정수
    checkUsingIsDigit("-123");    // 유효한 정수
    checkUsingIsDigit("12.34");   // 정수가 아님
}
  1. 프로그램의 최종 버전을 컴파일하고 실행합니다:
javac CheckInputInteger.java
java CheckInputInteger

다음 출력을 볼 수 있습니다:

789 is a valid integer
-123 is a valid integer
12.34 is not a valid integer
Output of the program showing valid and invalid integer checks

요약

이 랩에서는 Java 에서 정수 입력을 검증하는 세 가지 다른 방법을 살펴보았습니다.

  1. 간단하지만 예외 처리가 필요한 Integer.parseInt() 메서드
  2. 사용자 입력을 읽는 데 탁월한 Scanner.hasNextInt() 메서드
  3. 문자별 검증을 제공하는 Character.isDigit() 메서드

각 방법에는 장점과 사용 사례가 있습니다. parseInt() 메서드는 간단한 문자열 - 정수 변환에 적합하고, Scanner.hasNextInt()는 사용자 입력을 읽는 데 매우 뛰어나며, Character.isDigit()는 검증 프로세스에 대한 가장 많은 제어를 제공합니다.

이러한 검증 기술은 사용자 입력을 안전하고 효과적으로 처리할 수 있는 강력한 Java 애플리케이션을 개발하는 데 필수적입니다.