我正在尝试创建一个包含3个最大数字的数组的方法。但我的代码中有一个错误,我无法理解我做错了什么。谢谢!
public class Method3 {
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;
}
}
答案 0 :(得分:2)
您错过了一些案例:并且您无法使用first
初始化second
,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;
}
}
答案 1 :(得分:0)
你有什么问题。您将所有值设置为a[0]
,这意味着如果a[0]
是最大值,它将永远不会更新。当您更新第一个时,您将丢失第二个值而不是第三个值。你设置的数组[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;
}