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

【Java入門】数値が回文(パリンドローム)かどうかを判定するプログラムの作り方

この記事では、Javaを使って「与えられた数値が回文数(パリンドローム数)であるかどうか」を判定する方法を解説します。

回文(パリンドローム)とは?

回文とは、前から読んでも後ろから読んでも同じになる単語・数字・文章などの文字列のことです。例えば、「しんぶんし」や「たけやぶやけた」といった言葉、あるいは 10101 のような数字は回文です。

文字列が回文かどうかを判定するには、その文字列を逆順に並べ替えた結果が元の文字列と一致するかを確認します。具体的には、1番目と最後の要素、2番目と後ろから2番目の要素…というように、対応する位置の要素同士がすべて等しいかどうかを調べればよいのです。

入出力のイメージ

入力:

Enter the number : 454

出力:

The number 454 is palindrome number

判定アルゴリズム

回文判定の基本的な流れは以下の通りです。

Step 1 - 処理開始
Step 2 - my_input、my_reverse、my_sum、my_temp の4つの整数変数を宣言する
Step 3 - ユーザーから値を読み込む、または値を事前に定義する
Step 4 - whileループを使い、「*」「%」「/」の各演算子で入力値の逆順を計算する
Step 5 - my_temp を10で割った余りを my_reverse に代入する
Step 6 - (my_sum * 10) + my_reverse の結果を my_sum に代入する
Step 7 - my_temp を10で割った商を my_temp に代入する
Step 8 - 手順を繰り返し、入力値と my_sum が等しいかを確認する。等しければ回文数、そうでなければ回文数ではない
Step 9 - 結果を表示する
Step 10 - 処理終了

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

この例では、Scannerクラスを使ってユーザーからの入力を受け付け、その数値が回文かどうかを判定します。

import java.util.Scanner;
public class Palindrome {
   public static void main(String args[]){
      int my_input, my_reverse, my_sum, my_temp;
      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();
      my_sum = 0;
      my_temp = my_input;
      while ( my_temp > 0 ){
         my_reverse = my_temp%10;
         my_sum = (my_sum * 10) + my_reverse;
         my_temp = my_temp / 10;
      }
      if( my_input == my_sum )
         System.out.println("The number " +my_input +" is palindrome number ");
      else
         System.out.println("The number " +my_input +" is not palindrome number ");
   }
}

実行結果:

Required packages have been imported
A reader object has been defined
Enter the number : 454
The number 454 is palindrome number

例2:値を事前に定義しておく場合

この例では、判定対象の整数をあらかじめコード内で定義し、その値を使って回文判定を行います。

public class Palindrome {
   public static void main(String args[]){
      int my_input, my_reverse, my_sum, my_temp;
      my_input = 454;
      System.out.println("The number is defined as " +my_input);
      my_sum = 0;
      my_temp = my_input;
      while ( my_temp > 0 ){
         my_reverse = my_temp%10;
         my_sum = (my_sum * 10) + my_reverse;
         my_temp = my_temp / 10;
      }
      if( my_input == my_sum )
         System.out.println("The number " +my_input +" is palindrome number ");
      else
         System.out.println("The number " +my_input +" is not palindrome number ");
   }
}

実行結果:

The number is defined as 454
The number 454 is palindrome number

まとめ

回文判定のポイントは、剰余演算(%)で末尾の桁を取り出し、逆順の数値を組み立てるところにあります。whileループで桁を一つずつ処理し、最後に元の数値と比較することで、シンプルかつ効率的に判定できます。ぜひ実際にコードを動かして、挙動を確かめてみてください。

  1. Pythonで文字列・数値が回文(パリンドローム)かどうかを判定する方法【スライス活用】

    本記事では、入力された文字列や数値が回文(パリンドローム)であるかどうかを判定するPythonプログラムの解決策とアプローチについて解説します。 問題の概要 文字列が入力として与えられたとき、それが回文であるかどうかを判定するPython関数を作成する必要があります。 回文とは、文字列を逆から読んでも元の文字列と完全に一致するものを指します。たとえば「78287」や「しんぶんし」などが代表的な例です。 解決のアプローチ 回文判定は、主に以下の2つの方法で実現できます。 スライスによる文字列の反転 負のインデックスを使った比較 本記事では、このうちスライスを使った文字列の反転方法を中心に

  2. 数値の2進表現が回文かどうかを判定するPythonプログラム

    ここでは、Pythonの組み込み関数を活用して、数値の2進表現が回文(パリンドローム)になっているかどうかを判定します。まず bin() 関数で数値を2進数形式の文字列に変換し、次にその文字列を反転させて元の文字列と比較します。両者が一致すれば回文、一致しなければ回文ではないと判断できます。 実行例 Input: 5 Output: palindrome 解説 数値 5 の2進表現は 101 です。 この文字列を反転しても 101 のままなので、元の文字列と一致します。 したがって、5 は回文であると判定されます。 アルゴリズム Palindromenumber(n) /* n は判定対