为什么在此if语句中if(myList [i]> max)max = myList [i];`max放在括号之外?

时间:2018-08-11 05:41:11

标签: java

在以下用于查找数组中最大数字的代码中,为什么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);  
       }
    }

2 个答案:

答案 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");

}