【问题标题】:How to find the second highest number in an array [duplicate]如何找到数组中的第二大数字[重复]
【发布时间】:2018-09-22 01:50:05
【问题描述】:

在一个程序中,我们需要单独的方法来找到最高和第二高的数字。我的代码可以找到最高的数字,但我不知道如何找到第二高的数字。

public static int highestNumber(int []array1) {

  int max = -999999;

     for (int i = 1; i < array1.length; i++) {
         if (array1[i] > max) {
            max = array1[i];
            }
           } 
     return max;

}

  public static int secondHighest(int []array1) {

      int highest= highestNumber(array1);
    int secondHighest = array1[0];

           for (int i=1; i<array1.length; i++){
              if(array1[i]> highest && array1[i] secondHighest);
                    secondHighest=array1[i];
                }
  return secondHighest;
 }

【问题讨论】:

  • 你必须使用两个“单独”的方法!?
  • 你的代码有错别字吗?应该是if(array1[i]&gt; highest &amp;&amp; array1[i] &lt; secondHighest);

标签: java arrays loops methods


【解决方案1】:

我不喜欢使用 -9999999,请使用 Integer.MIN_VALUE 或使用数组的第一个索引,
但是当使用第一个索引时,请确保数组的长度必须大于或等于 1

public static int secondHighest(int[] array1)
{
    int highest = highestNumber(array1);

    int max = array[0];
    for( int i = 1; i < array1.Length; i++)
    {
        if(array[i] > max && array[i] < highest){
            max = array[i];
        }
    }

    return max;
}

【讨论】:

    【解决方案2】:
    public static int secondHighest(int[] array1)
    {
        int highest = highestNumber(array1);
        int max = -9999999;
    
        for( int i = 0; i < array1.Length; i++)
        {
            if(array[i] > max && array[i] < highest) max = array[i];
        }
    
        return max;
    }
    

    【讨论】:

      猜你喜欢
      • 2020-05-27
      • 2018-03-21
      • 2014-02-20
      • 2012-11-01
      • 2023-03-22
      • 1970-01-01
      • 2011-02-06
      • 2017-01-04
      • 2013-11-10
      相关资源
      最近更新 更多