Java에서 문자열이 정수인지 확인하는 방법

Rupam Yadav 2023년10월12일
  1. Java에서Character.digit()로 문자열이 정수인지 확인
  2. Java에서 문자열이 string.matches(pattern)로 정수인지 확인
  3. Java에서Scanner.nextInt(radix)로 문자열이 정수인지 확인
Java에서 문자열이 정수인지 확인하는 방법

Java의 String 및 Integer는 데이터 저장에 자주 사용되지만 때로는 한 데이터 유형에 다른 데이터 유형과 호환되는 요소가 포함되어 있는지 확인하고 싶을 수 있습니다.

문자열에는 알파벳, 기호 및 숫자가 포함될 수 있으므로 문자열이 보유하고있는 데이터 유형을 결정하는 것이 유용합니다. 다른 방법으로 문자열을 확인하는 예를 살펴 보겠습니다.

Java에서Character.digit()로 문자열이 정수인지 확인

다음 예제에는 isStringInteger(stringToCheck, radix)함수에 전달할 수있는 세 개의 문자열이 있음을 알 수 있습니다. radix는 우리가 얻고 자하는 숫자의 범위를 알려줍니다. 여기서는 0에서 9까지의 범위를 허용하는 10을 사용합니다.

Character.digit()는 문자열의 모든 문자를 확인하고 숫자 인 경우 0보다 큰 숫자를 반환합니다. 결과를 정확하게 만들기 위해 추가 조건문을 추가 할 수도 있습니다.

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "3030";
    String str3 = "-9";

    boolean integerOrNot1 = isStringInteger(str1, 10);
    System.out.println("Is " + str1 + " an Integer? -> " + integerOrNot1);

    boolean integerOrNot2 = isStringInteger(str2, 10);
    System.out.println("Is " + str2 + " an Integer? -> " + integerOrNot2);

    boolean integerOrNot3 = isStringInteger(str3, 10);
    System.out.println("Is " + str3 + " an Integer? -> " + integerOrNot3);
  }

  public static boolean isStringInteger(String stringToCheck, int radix) {
    if (stringToCheck.isEmpty())
      return false; // Check if the string is empty
    for (int i = 0; i < stringToCheck.length(); i++) {
      if (i == 0 && stringToCheck.charAt(i) == '-') { // Check for negative Integers
        if (stringToCheck.length() == 1)
          return false;
        else
          continue;
      }
      if (Character.digit(stringToCheck.charAt(i), radix) < 0)
        return false;
    }
    return true;
  }
}

출력:

Is 12000003 an Integer? -> true

Java에서 문자열이 string.matches(pattern)로 정수인지 확인

문자열에 Integer 요소가 포함되어 있는지 식별하는 다음 방법에서는 특정 패턴, 즉 숫자 값을 일치시키는 데 도움이 될 수있는 정규식을 사용할 수 있습니다. -?\\d+는 문자열과 일치시켜 부울 유형으로 결과를 얻을 수있는 표현식입니다.

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "123";
    String str3 = "000000009";

    boolean integerOrNot1 = str1.matches("-?\\d+");
    System.out.println("Is " + str1 + " an Integer? -> " + integerOrNot1);

    boolean integerOrNot2 = str2.matches("-?\\d+");
    System.out.println("Is " + str2 + " an Integer? -> " + integerOrNot2);

    boolean integerOrNot3 = str3.matches("-?\\d+");
    ;
    System.out.println("Is " + str3 + " an Integer? -> " + integerOrNot3);
  }
}

출력:

Is ABC123 an Integer? -> false
Is 123 an Integer? -> true
Is 000000009 an Integer? -> true

Java에서Scanner.nextInt(radix)로 문자열이 정수인지 확인

Java의 유명한Scanner()클래스를 사용할 수도 있습니다. nextInt()메소드는 주어진 문자열이 Int 유형인지 아닌지를 확인할 수 있습니다.

import java.util.Scanner;

public class Main {
  public static void main(String[] args) {
    String str1 = "ABC123";
    String str2 = "3030";
    String str3 = "000000009";

    System.out.println("Is " + str1 + " an Integer? -> " + isStringInteger(str1, 10));
    System.out.println("Is " + str2 + " an Integer? -> " + isStringInteger(str2, 10));
    System.out.println("Is " + str3 + " an Integer? -> " + isStringInteger(str3, 10));
  }

  public static boolean isStringInteger(String stringToCheck, int radix) {
    Scanner sc = new Scanner(stringToCheck.trim());
    if (!sc.hasNextInt(radix))
      return false;
    sc.nextInt(radix);
    return !sc.hasNext();
  }
}

출력:

Is ABC123 an Integer? -> false
Is 3030 an Integer? -> true
Is 000000009 an Integer? -> true
작가: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

관련 문장 - Java String

관련 문장 - Java Int