Java で整数の桁区切りを取得する方法

Rupam Yadav 2023年10月12日
  1. % (mod) で与えられた整数値の残りを取得する
  2. 文字の配列を取得するには、String.toCharArray() を使用する
  3. number.split("(?<=.)") 文字列の配列を取得して分割するメソッド
  4. 再帰を用いた整数からの桁の分離
Java で整数の桁区切りを取得する方法

Java には、整数を扱うためのメソッドがたくさんあります。ここでは、整数数から一桁ごとに抽出して分離する方法を見ていきましょう。

% (mod) で与えられた整数値の残りを取得する

整数の一桁ごとに剰余メソッドを使用することで、整数の各桁を得ることができます。Java では、% (mod)演算子を使って任意の整数の余りを得ることができます。

しかし、単に余りを取得しただけでは、結果は逆順になってしまいます。これが LinkedList スタックを使用する理由です。このスタックでは、一つ一つのリマインダーをプッシュしてから一つずつポップし、目的の結果を得ることができます。

import java.util.LinkedList;

public class Main {
  public static void main(String[] args) {
    int number = 12223;

    LinkedList<Integer> stack = new LinkedList<Integer>();
    while (number > 0) {
      stack.push(number % 10);
      number = number / 10;
    }
    while ((!stack.isEmpty())) {
      System.out.println(stack.pop());
    }
  }
}

出力:

1
2
2
2
3

文字の配列を取得するには、String.toCharArray() を使用する

整数から桁数を分離するもう一つの方法は toCharArray() メソッドを使用することです。

整数を文字列に変換し、文字列の toCharArray() を使って文字の配列を取得します。これで、すべての文字を一つずつプリントアウトすることができるようになりました。後で文字を整数形式に変換することができます。

public class Main {
  public static void main(String[] args) {
    int number1 = 12223;

    String number = String.valueOf(number1);

    char[] digits1 = number.toCharArray();

    for (int i = 0; i < digits1.length; i++) {
      System.out.println(digits1[i]);
    }
  }
}

出力:

1
2
2
2
3

number.split("(?<=.)") 文字列の配列を取得して分割するメソッド

このメソッドは上のものと似ていますが、ここでは String の関数 split を用いています。

public class Main {
  public static void main(String[] args) {
    int number1 = 12223;

    String number = String.valueOf(number1);

    String[] digits = number.split("(?<=.)");

    for (int i = 0; i < digits.length; i++) {
      System.out.println(digits[i]);
    }
  }
}

出力:

1
2
2
2
3

再帰を用いた整数からの桁の分離

再帰法を利用して、より簡単な方法で int から桁数を取り出すことができます。

メソッド recursion() は数値を引数に取り、その数値を 10 で割って自身を呼び出します。これはメソッドが呼び出される回数です。

public class Main {
  public static void main(String[] args) {
    recursion(12223);
  }

  public static void recursion(int number) {
    if (number > 0) {
      recursion(number / 10);
      System.out.printf(number % 10);
    }
  }
}

出力:

1
2
2
2
3
著者: 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 Int