使用foreach循环

时间:2017-01-17 21:33:57

标签: java arrays

我读到了一个foreach循环,我试图找到数组中最大的元素,但它不像通常那样工作。我想知道区别是什么?

public void foreachloop()
{
    int[] T = { 1, 2, 3, 4, 5, 6, 7 };
    int x = T[0];

    for (int element : T) {
        if (T[element] > x) {
            x = T[element];
        }
    }

    System.out.println(x);
}

3 个答案:

答案 0 :(得分:2)

执行for (int element: T)后,变量element会遍历T中的每个值。因此,您不应该尝试查看值T[element] - 仅element本身。

像这样:

for (int element: T) {
    if (element > x) x = element;
}

如果在T[element]为7时尝试访问element,则会引发异常,因为7不是数组的有效索引。 (有效索引为0到6。)

答案 1 :(得分:2)

  1. max初始化为可能的最小整数
  2. 使用for-each循环检查当前元素是否大于max,如果是,则使新值max
  3. 在for-each循环结束后返回max
  4. 我个人会为此创建一个单独的方法:

    import java.util.Arrays;
    
    class Main {
      public static void main(String[] args) {
        int[] arr = new int[]{1,2,3};
        System.out.println("The array looks like: " + Arrays.toString(arr)); //The array looks like: [1, 2, 3]
        System.out.println("The max of the array is: " + arrayMax(arr)); //The max of the array is: 3
      }
    
      public static int arrayMax (int[] arr) {
        int max = Integer.MIN_VALUE; //initilize max to the smallest integer possible
        for(int element: arr)
            max = Math.max(max, element);
        return max;
      }
    }
    

    试试here!

答案 2 :(得分:1)

当你使用foreach时,首先要定义数组的类型(这里是int),然后给出一个任意名称(你选择element),然后{{1}然后是数组的名称。之后,您可以使用您选择的名称访问元素。

: