在java中随机生成的数组中找到第二高的数字

时间:2012-11-21 21:41:49

标签: java

嘿伙计们我有一个功课问题,要求我找到随机生成的数组的第二高数字并返回该数字。数组必须长度为6,所以从概念上讲,这是我遇到编译器错误之前所拥有的。有人可以帮我完成吗? 更新:我需要引用数组并在main方法中调用它试图在system.out.println语句中这样做但是我不知道如何调用正确的方法/数组。

import java.io.*;
import java.util.Arrays; 

public class SecondHighest{
 public static int find2ndHighest(int[] list){
//define how long the array can be
list[] = new int[6];
    //create a for loop to fill the array.
for(int i = 0; i>=list.length; i++){
  list[i] = (int)(Math.random()*10);

}
  Arrays.sort(list);    //use the built-in sorting routine
  return list[1];

}
}

3 个答案:

答案 0 :(得分:0)

您的循环永远不会有效,因为i永远不会大于或等于 list.length

更改

for(int i = 0; i>=list.length; i++){

for(int i = 0; i<list.length; i++){

它应该小于因为,数组索引从零开始并以Arraylength-1 结束。

也改变了

list[] = new int[6];// this is wrong 

 to 

list = new int[6]; // you dont need sqare brackets, you only need array reference.

答案 1 :(得分:0)

阅读编译错误!有许多语法错误,例如调用列表 - &gt;将它作为参数后列出[]。你可以称之为列表!此外,您不必在方法中创建新列表!应该是这样的:

 import java.io.*;
    import java.util.Arrays; 

    public class SecondHighest{

     public static int find2ndHighest(int[] list){

        //create a for loop to fill the array.
    for(int i = 0; i<list.length; i++){
      list[i] = (int)(Math.random()*10);

    }
      Arrays.sort(list);    //use the built-in sorting routine
      return list[1];
    }

     //define how long the array can be
      int[] list = new int[6];
      int result = find2ndHighest(list);

    }

我不确定数学随机函数..

答案 2 :(得分:0)

另外,考虑到它是一个家庭作业问题,最好不对整个数组进行排序,因为你会得到O(n * logn)复杂度,但迭代值并保持最大的两个,为了O(n)复杂性。