問題1-18
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、2つのint配列オブジェクトを引数に取り、共通する数値の個数を調べて戻り値として返すcommonメソッドを定義してください。
(今回のサンプルでは10、17、38、55の4つの数値が2つの配列に共通しています。)
【実行結果】
共通する数値の個数:4
【ArrayMethodPractice3.java】
public class ArrayMethodPractice3 { public static void main(String[] args) { int[] arr = {13, 90, 10, 79, 101, 25, 123, 38, 5, 16, 64, 55, 17}; int[] arr2 = {38, 118, 26, 17, 41, 53, 10, 88, 92, 102, 67, 22, 55}; // commonメソッドの呼び出し System.out.println("共通する数値の個数:" + common(arr, arr2)); } // ここにcommonメソッドを定義してください。 }
解答例
【ArrayMethodPractice3.java】
public class ArrayMethodPractice3 { public static void main(String[] args) { int[] arr = {13, 90, 10, 79, 101, 25, 123, 38, 5, 16, 64, 55, 17}; int[] arr2 = {38, 118, 26, 17, 41, 53, 10, 88, 92, 102, 67, 22, 55}; // commonメソッドの呼び出し System.out.println("共通する数値の個数:" + common(arr, arr2)); } // ここにcommonメソッドを定義してください。 public static int common(int[] arr, int[] arr2) { // 共通数格納用変数の宣言と初期化 int count = 0; // 1つ目の配列の走査 for(int i = 0; i < arr.length; i++) { // 2つ目の配列の走査 for(int j = 0; j < arr2.length; j++) { // 共通する数値が見つかった場合 if(arr[i] == arr2[j]) { // 共通数変数をインクリメント count++; } } } return count; } }
解説
今回は1つのメソッドで2つの配列オブジェクトを受け取ります。
2つのint配列型オブジェクトがあり、その共通する数値をカウントします。
ですので、for文のネストが欠かせません。
1つ目のint配列型オブジェクトの要素1つに対して、2つ目のint配列型オブジェクトに同じものがあるかどうかを逐一チェックしていきます。
どちらの配列オブジェクトも要素数が10個なのであれば、10×10の100回チェックが入るわけです。
この問題に関しても、前の2問と同様に拡張for文を用いて次のように記述することも可能です。
for(int value : arr) { for(int value2 : arr2) { // 共通する数値が見つかった場合 if(value == value2) { // 共通数変数をインクリメント count++; } } }
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】