簡體   English   中英

使用Java的帶有數組的printMax方法…我不明白的是雙重結果=數字[0]

[英]printMax method with array using Java…one thing I don't understand is double result = numbers[0]

我正在使用Liang的Java編程簡介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);
    }
}

您詢問這意味着什么:

    double result = numbers[0];

就其本身而言,它只是將numbers數組的第一個元素分配給result 零是索引值。

使用零值的原因是在Java(以及大多數編程語言!)中,數組的索引從零開始,而不是從一開始。 例如

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

是建立一個數組,其長度為3 ,並且其索引是012 當然, array[0]值為1.0


如果再查看上下文,此語句之后的循環將檢查numbers數組的其他元素,從一個到最后一個(即numbers.length - 1 ),並將它們與result進行比較。

因此從這個方面來說,您要詢問的語句是“啟動”算法……就像您“啟動”泵以啟動它一樣。


如果我們對以數字[0]為第一個值的算法加注,那么當for循環從int i = 1開始並增加直到i = 3時,該算法如何工作?numbers [0]怎么辦?

  • 如果數組有3個元素,則當i到達3時,循環結束

  • 嘗試了解以下語句的作用:

     if (numbers[i] > result) result = numbers[i]; 
  • 徒勞地... numbers[0] 沒有任何反應 您沒有為其分配任何內容! 您正在為result分配一個值。 重點上發生什么。

這表示數組中元素的索引,它從零開始,所以0是第一個元素

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM