0

我正在研究一种方法,试图创建一个包含 3 个最大数字的数组。但是我的代码中有一个错误,我无法理解我做错了什么。谢谢!

公共类方法3 {

public static void main(String[] args) {
    int[] a={2,5,6,7,9,1,2,3,5,9,7};

    System.out.print(largestSum(a));


}


public static int[] largestSum(int[] a){

    int temp, first, second, third;
    first=second=third=a[0];

    for(int element: a){

        if(first < element)
            {
                temp=first;
                first=element;
                second=temp;
            }

        if(second<element && first> element)
            {

                temp=element;
                second=element;
                third=temp;
            }

        if(third< element && second> element)
            {
            temp=element;
            third=element;

            }

    }

    int [] array=new int[3];
    array[0]=first;
    array[1]=second;
    array[3]=third;



    return array;
}

}

4

2 回答 2

2

您错过了一些情况:并且您无法 initalize firstsecond并且third全部使用,a[0]因为该值仅有效一次。

first=second=third=Integer.MIN_VALUE;

for(int element: a){
    if(first <= element){
            third=second;
            second=first;
            first=element;
            continue;
    }
    if(second <= element ){
            third=second;
            second=element;
            continue;
    }
    if(third < element){
            third=element;
    }
}
于 2013-01-26T19:57:33.257 回答
0

您所拥有的存在一些问题。您将所有值设置为a[0]这意味着如果a[0]是最大的,它将永远不会被更新。当您更新第一个最大值时,您会丢失第二个值而不是第三个值。并且您正在设置 array[3] 这对于 3 元素数组无效。

尝试。

  public static int[] largestSum(int[] a)
  {
    int largest[3] = {Integer.MIN_VALUE, Integer.MIN_VALUE, Integer.MIN_VALUE};

    for(int i = 0; i < a.length; i++)
    {
       if(a[i] > largest[0])
       {
          largest[2] = largest[1];
          largest[1] = largest[0];
          largest[0] = a[i];
       }
       else if(a[i] > largest[1])
       {
          largest[2] = largest[1];
          largest[1] = a[i];
       }
       else if(a[i] > largest[2])
       {
         largest[2] = a[i];
       }
    }

    return largest;
 }
于 2013-01-26T19:58:47.263 回答