Java で文字列が整数かどうかを調べる方法

Rupam Yadav 2023年10月12日
  1. Java の Character.digit() で文字列が整数かどうかを調べる
  2. Java の string.matches(pattern) で文字列が整数かどうかを調べる
  3. Java の Scanner.nextInt(radix) で文字列が整数かどうかを調べる
Java で文字列が整数かどうかを調べる方法

Java における文字列と整数はデータを格納するために使用されることが多いですが、あるデータ型に別のデータ型と互換性のある要素が含まれているかどうかを確認したいことがあるかもしれません。

文字列にはアルファベット、記号、数字を含むことができることがわかっているので、文字列が保持しているデータの種類を判断するのに便利です。ここでは、さまざまな方法で文字列をチェックする例を見ていきます。

Java の Character.digit() で文字列が整数かどうかを調べる

次の例では、関数 isStringInteger(stringToCheck, radix) に渡すことができる 3つの文字列があることがわかります。ここでは 10 を使用しており、0 から 9 までの範囲を指定することができます。

文字列中のすべての文字をチェックし、桁であれば 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 の要素が含まれているかどうかを判別する方法では、特定のパターン、つまり数値と一致させることができる正規表現を使用することができます。この正規表現は、文字列と照合して、結果をブール型で取得することができます。

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