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

  1. Java の Character.digit() で文字列が整数かどうかを調べる
  2. Java の string.matches(pattern) で文字列が整数かどうかを調べる。
  3. Java の Scanner.nextInt(radix) で文字列が整数かどうかを調べる。

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

関連記事 - Java String

  • Java で文字列が空かヌルかを調べる方法
  • Java で日付を文字列に変換する方法
  • 関連記事 - Java Int

  • Java で整数を文字列に変換する方法
  • Java で文字列から部分文字列を削除する方法
  • 関連記事 - Java

  • Java で文字列を分割する方法
  • Java で配列リストを文字列に変換する方法
  • comments powered by Disqus