問題1-16
mainメソッドはすでに完成しています。(変更は禁止です)
mainメソッド内で呼び出している、引数で渡ってくるint配列オブジェクトの各要素の値を合計して、戻り値として返すsumメソッドを定義してください。
【実行結果】
配列の合計値:28
【ArrayMethodPractice.java】
public class ArrayMethodPractice { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; // sumメソッドの呼び出し System.out.println("配列の合計値:" + sum(arr)); } // ここにsumメソッドを定義してください }
解答例
【ArrayMethodPractice.java】
public class ArrayMethodPractice { public static void main(String[] args) { int[] arr = {1, 2, 3, 4, 5, 6, 7}; // sumメソッドの呼び出し System.out.println("配列の合計値:" + sum(arr)); } // ここにsumメソッドを定義してください public static int sum(int[] arr) { // 合計値格納用変数の宣言と初期化 int total = 0; // 配列の走査 for(int i = 0; i < arr.length; i++) { // 配列の各要素を加算していく total += arr[i]; } return total; } }
解説
引数に配列オブジェクトを受け取るメソッドを定義する基本的な問題です。
今回定義するsumメソッドの引数はint配列型になりますが、より本格的なことを言うとint配列型は参照型なので、nullが渡ってくる可能性があります。
ですので、引数のnullチェックを行う方がよりリアルだと言えます。 (今回は省略しています)
合計値を一時的に保存するためのローカル変数totalを宣言している点がポイントです。
そのtotal変数に算術代入演算子+=を用いて、配列の各要素を加算していきます。
メソッド内で宣言する変数をローカル変数といいますが、ローカル変数には初期値が入っていない点にも注意してください。
配列を走査する方法として、JDK5.0から導入された拡張for文を利用する方法もあります。
拡張for文を使用すると、次のようになります。
// 配列の走査 for(int value : arr) { // 配列の各要素を加算していく total += value; }
拡張for文はコロンを使って2つの領域を作ります。
右側の2つ目の領域には、配列やコレクションなどの変数を記述します。
左側の1つ目の領域には、配列やコレクションなどの各要素を保持するための変数を宣言します。
この時、変数を宣言するだけで、値を初期化することはできませんので注意しましょう。
今回はfor文のループ変数iを特に使用しないので、拡張for文を使った方がスマートかもしれませんね。
参考図書
LINE公式アカウント
仕事が辛くてたまらない人生が、仕事が楽しくてたまらない人生に変わります。
【登録いただいた人全員に、無料キャリア相談プレゼント中!】