0

我正在与 Liang 一起通过 Intro to Java Programming 9e 学习 Java。为什么必须有数字[0],如双重结果=数字[0]?我的意思是在括号中,为什么它必须是0?

public class VarArgsDemo {

    public static void main(String[] args) {
        printMax(34, 3, 3, 2, 56.5);
        printMax(new double[] {1, 2, 3});
    }

    public static void printMax(double... numbers) {
        if (numbers.length == 0) {
        System.out.println("No arguments passed");

    return;
        }

    double result = numbers[0];

    for (int i = 1; i < numbers.length; i++)
        if (numbers[i] > result)
            result = numbers[i];

    System.out.println("The max value is " + result);
    }
}
4

2 回答 2

1

你问这意味着什么:

    double result = numbers[0];

就其本身而言,它只是将numbers数组的第一个元素分配给result. 零是索引值。

使用零值的原因是在 Java(以及大多数编程语言!)中,数组是从零开始索引的,而不是从一开始。例如,

   double[] array = new double[] {1.0, 2.0, 3.0};

正在创建一个长度为且3索引为 和0的数组。当然, 的值为。12array[0]1.0


如果然后查看上下文,则该语句后面的循环正在检查numbers数组的其他元素,从一个到最后一个(即numbers.length - 1),并将它们与result.

因此,从这方面来看,您要问的陈述是“启动”算法……就像您“启动”泵以启动它一样。


如果我们初始化算法,其中 numbers[0] 将是第一个值,那么当 for 循环从 int i = 1 开始并增加到 i = 3 时,它是如何工作的。 numbers[0] 会发生什么?

  • 如果数组有 3 个元素,则循环在到达时结束i3

  • 尝试并理解此语句的作用:

    if (numbers[i] > result)
        result = numbers[i];
    
  • 学究式地……什么都没有发生numbers[0]。你没有分配任何东西给它!您正在为 分配一个值result。专注于会发生什么

于 2013-10-12T02:41:36.733 回答
0

这表示数组中元素的索引,它是从零开始的,所以 0 是第一个元素

于 2013-10-12T02:34:03.647 回答