導入
配列の全要素を1つずつ調べる、たとえば「一番大きい値を探す」「全部を表示する」といった処理は、配列を扱ううえでもっとも基本的な操作です。前章の for と拡張forを使い分けながら書いてみましょう。
説明
public class Main {
public static void main(String[] args) {
int[] nums = {4, 9, 2, 7, 5};
for (int i = 0; i < nums.length; i++) {
System.out.println(nums[i]);
}
int max = nums[0];
for (int n : nums) {
if (n > max) {
max = n;
}
}
System.out.println(max);
}
}
for (int i = 0; i < nums.length; i++)… インデックスを使って走査する形。iを使ってnums[i]にアクセスするので、「何番目か」の情報も同時に扱えます。for (int n : nums)… 拡張forで中身だけを順に取り出す形。最大値を探すように「値さえわかればいい」処理はこちらのほうが簡潔です。- 最大値探索のコツは、まず先頭の要素を「今のところの最大値」としておき、残りと比べながら更新していくことです。
「インデックスが必要か」で for と拡張forを使い分けましょう。
やってみよう
下のエディタで nums の中身を変えて、最大値の結果が変わることを確かめましょう。最大値ではなく最小値を求めるにはどう変えればよいか、考えてみてください。
演習
int[] nums = {12, 45, 7, 89, 23}; の中の最小値を通常の for で求めて表示してください(結果は 7)。
ヒント1を見る
int min = nums[0]; としてから、for (int i = 0; i < nums.length; i++) { if (nums[i] < min) { min = nums[i]; } }。
ヒント2を見る
最後に System.out.println(min);。