見出し画像

Java : 文字'X'を整数Xに変換する(Character.getNumericValueほか)

※自分用学習メモです

char を整数に変換したい場合には、Character.getNumericValue() または Character.digit() を使用するか、char を int にキャストする必要があります。


1. Character.getNumericValue()

  • このメソッドは、指定された文字に対応する整数値を返します。

  • 文字が数字 ('0'~'9') であれば、その数値(0~9)を返します。

  • アルファベット ('A'~'Z' または 'a'~'z') はそれぞれに対応する値を返します(例: 'A' → 10, 'B' → 11 など)。

  • 数値に変換できない場合は、-1 を返します。

public class Main {
    public static void main(String[] args) {
        char ch1 = '5';
        char ch2 = 'A';
        char ch3 = 'z';
        char ch4 = '#'; // 数字やアルファベットでない文字

        int num1 = Character.getNumericValue(ch1); // 5
        int num2 = Character.getNumericValue(ch2); // 10 (Aは10を意味)
        int num3 = Character.getNumericValue(ch3); // 35 (zは35を意味)
        int num4 = Character.getNumericValue(ch4); // -1 (変換不可)

        System.out.println("Character.getNumericValue('5'): " + num1);
        System.out.println("Character.getNumericValue('A'): " + num2);
        System.out.println("Character.getNumericValue('z'): " + num3);
        System.out.println("Character.getNumericValue('#'): " + num4);
    }
}

2. Character.digit()

  • このメソッドは、指定された基数(radix, 2~36)に基づいて、与えられた文字の数値を返します。

  • 基数(radix)が指定されるため、2進数、16進数など異なる基数での変換に対応しています。

  • 数値に変換できない場合は、-1 を返します。

public class Main {
    public static void main(String[] args) {
        char ch1 = '5';
        char ch2 = 'A';
        char ch3 = 'f';
        char ch4 = '9';
        char ch5 = 'G'; // 'G'は16進数として無効

        int num1 = Character.digit(ch1, 10); // 10進数の '5' → 5
        int num2 = Character.digit(ch2, 16); // 16進数の 'A' → 10
        int num3 = Character.digit(ch3, 16); // 16進数の 'f' → 15
        int num4 = Character.digit(ch4, 8);  // 8進数の '9' → -1 (8進数では無効)
        int num5 = Character.digit(ch5, 16); // 16進数の 'G' → -1 (Gは16進数に含まれない)

        System.out.println("Character.digit('5', 10): " + num1);
        System.out.println("Character.digit('A', 16): " + num2);
        System.out.println("Character.digit('f', 16): " + num3);
        System.out.println("Character.digit('9', 8): " + num4);
        System.out.println("Character.digit('G', 16): " + num5);
    }
}

Character.getNumericValue() と Character.digit() の違い

  • 基数の指定: Character.digit() では基数を指定できますが、Character.getNumericValue() は常に10進数またはそれに準じた変換を行います。

  • 変換の範囲: Character.getNumericValue() は幅広い文字(アルファベットや日本語など)を数値に変換しますが、Character.digit() は指定された基数に対応する文字だけを扱います。

  • 戻り値: 両方のメソッドとも変換できない場合は -1 を返します。

まとめ

  • Character.getNumericValue(char c): 文字の数値を取得する汎用的な方法。

  • Character.digit(char c, int radix): 指定した基数に基づいて文字の数値を取得する方法。

この記事が気に入ったらサポートをしてみませんか?