Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java入門】整数の桁数をカウントするプログラムの作り方


本記事では、Javaを使って整数の桁数をカウントする方法を解説します。桁数のカウントには、ループ処理カウンター変数を組み合わせるのが基本です。対象の数値を10で繰り返し割り算し、その回数を数えることで、整数の桁数を求めることができます。

以下に具体的な例を示します。

入力

たとえば、次の数値が入力されたとします。

Number : 15161718

出力

期待される結果は以下のとおりです。

The result is : 8

アルゴリズム

ステップ1:処理を開始する
ステップ2:整数型変数 my_count(カウンター)と my_input(入力値)を宣言する
ステップ3:ユーザーから値を読み込む、または値をあらかじめ定義しておく
ステップ4:forループを使い、入力値を10で割り続け、それ以上割れなくなるまで繰り返す。割り算のたびにカウンターを1ずつ増加させる
ステップ5:カウンターの値を結果として表示する
ステップ6:処理を終了する

例1:ユーザーからの入力を受け付ける場合

ここでは、Scannerクラスを使ってユーザーから数値を入力してもらい、その桁数を計算します。標準入力から値を読み込んで処理を行う、インタラクティブなプログラムです。

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      int my_count , my_input;
      my_count = 0;
      System.out.println("Required packages have been imported");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.print("Enter the number : ");
      my_input = my_scanner.nextInt();
      for (; my_input != 0; my_input /= 10, ++my_count) {
      }
      System.out.println("The number of digits in the given input is: " + my_count);
   }
}

実行結果

Required packages have been imported
A reader object has been defined
Enter the number : 15161718
The number of digits in the given input is : 8

ポイントは、初期化式を省略したfor文です。for (; my_input != 0; my_input /= 10, ++my_count) のように書くことで、「数値が0になるまで10で割り続け、その間カウンターを増やす」という処理を1行で簡潔に表現できます。

例2:値をあらかじめ定義しておく場合

ここでは、整数値があらかじめプログラム内で定義されており、その値を読み込んでコンソールに表示します。動作確認やテストの際に便利な書き方です。

public class Main {
   public static void main(String[] args) {
      int my_count = 0, my_input;
      my_count = 0;
      my_input = 15161718;
      System.out.println("The number is defined as " +my_input);
      for (; my_input != 0; my_input /= 10, ++my_count) {
      }
      System.out.println("The number of digits in the given input is: " + my_count);
   }
}

実行結果

The number is defined as 15161718
The number of digits in the given input is: 8

補足:別の方法と注意点

同じ処理は、数値を文字列に変換して長さを取得することでも実現できます。

int digits = String.valueOf(Math.abs(my_input)).length();

また、以下の点にも注意しましょう。

  • 負の数を扱う場合: マイナス記号は桁数として数えられないため、Math.abs() で絶対値に変換してからカウントします。
  • 入力が0の場合: ループが一度も実行されずカウントが0になりますが、実際の桁数は1桁です。「0なら1桁」と判定する処理を追加するとより正確になります。

このように、ループとカウンターを組み合わせれば、シンプルなコードで整数の桁数を求めることができます。ぜひ自分の環境でも試してみてください。


  1. Javaでカウンタープログラムを実装する方法をわかりやすく解説

    この記事では、JavaのSwingを使ってシンプルなカウンター(数を数える)アプリケーションを実装する方法を解説します。このプログラムでは、JLabelでカウント用のラベルを表示し、JTextFieldで現在のカウント値を保持し、JButtonで「追加(Add)」「削除(Remove)」「リセット(Reset)」の3つのボタンを作成します。 「Add」ボタンをクリックするとJTextField内のカウントが1ずつ増加し、「Remove」ボタンをクリックすると1ずつ減少します。さらに「Reset」ボタンをクリックすると、カウントは0にリセットされます。 実装例 import java.awt.*

  2. Pythonでn桁のステップ数を数えるプログラムを解説

    ステップ数とは何かある数値 n が与えられたとき、n桁のステップ数(Stepping Number)の個数を求める問題を考えてみましょう。ステップ数とは、隣り合うすべての桁同士の絶対差がちょうど1になる数のことです。例えば「123」は隣接する桁が 1→2→3 とすべて1ずつ増えているためステップ数ですが、「124」は 2→4 の差が2になるためステップ数ではありません。また、答えが非常に大きくなる可能性があるため、結果は 10^9 + 7 で割った余りとして返します。入出力の例入力が n = 2 の場合、出力は 17 になります。これは、2桁のステップ数が以下の17個存在するためです。12,