2

嘿伙计们,我有一个作业问题,要求我找到随机生成的数组的第二大数字并返回该数字。该数组的长度必须为 6,因此从概念上讲,这就是我遇到编译器错误之前所拥有的。有人可以帮我完成吗?更新:我需要引用数组并在我试图在 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];

}
}
4

3 回答 3

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.
于 2012-11-21T21:44:39.703 回答
0

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

于 2012-11-21T22:04:05.283 回答
0

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

 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);

    }

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

于 2012-11-21T21:52:10.427 回答