BohYoh.comトップページへ

新・明解Javaで学ぶアルゴリズムとデータ構造

戻る  

演習3-3の解答

 要素数がn である配列a からkey と一致する全要素のインデックスを、配列idx の先頭から順に格納し、一致した要素数を返す以下のメソッドを作成せよ。
  static int searchIdx (int[] a, int n, int key, int[] idx)

// 演習3-3 // ある値をもつ配列中の全要素を別の配列にコピー import java.util.Scanner; class SearchIndex {    //--- 配列aの先頭n個の要素からkeyと一致する全要素のインデックスを    //--- 配列idxの先頭から順に格納して一致した要素数を返す    static int searchIdx(int[] a, int n, int key, int[] idx) {       int count = 0;            // keyと一致する要素数       for (int i = 0; i < n; i++)          if (a[i== key)             idx[count++= i;        return count;    }    public static void main(String[] args) {       Scanner stdIn = new Scanner(System.in);       System.out.print("要素数:");       int num = stdIn.nextInt();       int[] x = new int[num];               // 要素数numの配列       int[] y = new int[num];               // 要素数numの配列       for (int i = 0; i < num; i++) {          System.out.print("x[" + i + "]:");          x[i= stdIn.nextInt();       }       System.out.print("探す値:");            // キー値の読込み       int ky = stdIn.nextInt();       int count = searchIdx(x, num, ky, y);   // 配列x中の値がkyの要素をyにコピー       if (count == 0)          System.out.println("その値の要素は存在しません。");       else          for (int i = 0; i < count; i++)             System.out.println("その値は" "x[" + y[i"]にあります。");    } }


戻る