[英]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
,並且其索引是0
, 1
和2
。 當然, 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.