在以下用于查找数组中最大数字的代码中,为什么max
放在代码之外?为什么max
不在括号内?
在这一行中,我无法理解if
语句的构造。
public class TestArray {
public static void main(String[] args) {
double[] myList = {1.9, 2.9, 3.4, 3.5};
// Print all the array elements
for (int i = 0; i < myList.length; i++) {
System.out.println(myList[i] + " ");
}
// Summing all elements
double total = 0;
for (int i = 0; i < myList.length; i++) {
total += myList[i];
}
System.out.println("Total is " + total);
// Finding the largest element
double max = myList[0];
for (int i = 1; i < myList.length; i++) {
if (myList[i] > max) max = myList[i];
}
System.out.println("Max is " + max);
}
}
答案 0 :(得分:1)
此行
if (myList[i] > max) max = myList[i];
可以看作
if (myList[i] > max)
{
max = myList[i];
}
即它有一个条件if
,当满足条件时,就会有一个关于要做什么的声明。即第二个max
不是if
逻辑表达式的一部分,它是有条件执行的代码的一部分。
总的效果是查看myList
中的每个条目,将其与之前看到的最大值进行比较,并保留较高的值,作为之前看到的最大值。
关于“为什么?”,这是一个品味问题。
优点是键入的字符更少,代码更“短”。
我总是使用较长版本的原因主要是编码规则,对于不同的人来说,维护数量越多,维护规则就越重要
在给定项目上工作的人。
答案 1 :(得分:1)
假设您在for循环中声明“ double max = myList [0];”,则对于每次迭代,都会声明max变量并将其初始化为列表中的第一个元素。
如果列表包含2、4、1、9、8的示例 我们认为2是最大值(因此将2存储在max变量中),然后将2与列表中的其他值进行比较
如果在IF中只执行一条语句,则可以编写不带括号的IF
喜欢
if(a> b)
System.out.println(a + "is greater");
与
类似if(a> b)
{
System.out.println(a + "is greater");
}