2

こんにちは、ランダムに生成された配列の 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

あなたのループは、list.length以上iになることは決してないので、決して機能しません

変化する

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 の場合は最大の 2 つだけを保持します。 (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 に答える