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

【Java入門】配列に指定した値が含まれているかを判定する方法

この記事では、Javaで配列の中に特定の値が含まれているかどうかを確認する方法を解説します。基本的な考え方は、配列の各要素を順番に走査(イテレート)し、検索したい値と比較するというものです。

処理の流れ(アルゴリズム)

  1. 処理を開始する
  2. 整数型の変数(my_input、i、array_size)とboolean型の変数(my_check)、そして整数型配列(my_array)を宣言する
  3. ユーザーから値を入力してもらう、またはあらかじめ値を定義しておく
  4. forループで配列の要素を順に取り出し、検索対象の値と比較する
  5. 一致する要素が見つかれば「含まれている」、見つからなければ「含まれていない」と判定する
  6. 結果を表示する
  7. 処理を終了する

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

この例では、Scannerクラスを使ってユーザーから数値と配列の要素を入力として受け付けます。

import java.util.Scanner;
public class Main {
   public static void main(String[] args) {
      int my_input , i, array_size;
      boolean my_check = false;
      System.out.println("必要なパッケージがインポートされました");
      Scanner my_scanner = new Scanner(System.in);
      System.out.println("A reader object has been defined ");
      System.out.println("検索する数値を入力してください");
      my_input = my_scanner.nextInt();
      System.out.print("配列のサイズを入力してください : ");
      array_size = my_scanner.nextInt();
      int my_array[] = new int[array_size];
      System.out.println("配列の要素を入力してください :" );
      for ( i = 0 ; i < array_size ; i++ ){
         my_array[i] = my_scanner.nextInt();
      }
      for ( i = 0 ; i < array_size ; i++ ) {
         if (my_array[i] == my_input) {
            my_check = true;
            break;
         }
      }
      if(my_check)
         System.out.println("\n配列は指定された値を含んでいます");
      else
         System.out.println("\n配列は指定された値を含んでいません");
   }
}

実行結果

Required packages have been imported
A reader object has been defined
Enter the number to be searched
25
Enter the size of array : 5
Enter the elements of the array :
10
15
20
25
30
配列は指定された値を含んでいます

例2:値があらかじめ定義されている場合

次の例では、配列と検索対象の値がコード内で事前に定義されており、そのままプログラムを実行して結果を確認できます。

public class Main {
   public static void main(String[] args) {
      int[] my_array = {15, 20, 25, 30, 35, 40};
      int my_input , i, array_size;
      array_size = 5;
      my_input = 25;
      boolean my_check = false;
      System.out.println("検索する数値は " +my_input + " です");
      System.out.println("整数型配列の要素は以下の通りです :" );
      for ( i = 0 ; i < array_size ; i++ ){
         System.out.print(my_array[i] +" ");
      }
      for ( i = 0 ; i < array_size ; i++ ) {
         if (my_array[i] == my_input) {
            my_check = true;
            break;
         }
      }
      if(my_check)
         System.out.println("\n配列は指定された値を含んでいます");
      else
         System.out.println("\n配列は指定された値を含んでいません");
   }
}

実行結果

検索する数値は 25 です
整数型配列の要素は以下の通りです :
15 20 25 30 35
配列は指定された値を含んでいます

補足:より簡潔な書き方

上記のようなループ処理を自分で書く代わりに、Java 8以降ではストリームAPIを使ってより簡潔に記述することもできます。

import java.util.Arrays;

boolean found = Arrays.stream(my_array).anyMatch(x -> x == my_input);

また、Arrays.asList()を使えば、オブジェクト型の配列であればcontains()メソッドで簡単に判定できます。用途や配列の型に応じて、最適な方法を選択するとよいでしょう。

  1. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列

  2. Pythonで配列が単調(モノトニック)かどうかを判定する方法

    この記事では、与えられた配列が「単調(モノトニック)」であるかどうかを判定するための考え方と実装方法について解説します。 問題の定義 n個の整数を含む配列 Arr が入力として与えられます。このとき、その配列が単調な性質を持っているかどうかを判定する必要があります。 配列が単調であるとは、要素が最初から最後まで連続して増加しているか、または連続して減少している状態を指します。つまり、増加と減少が混在していない配列が単調な配列です。 数学的な定義 配列 A が単調増加であるのは、すべての i <= j に対して次の条件が成り立つ場合です。 A[i] <= A[j] 同様に、配列 A