0

コードにエラーが発生するのはなぜですか?乱数を生成するrandomGenと乱数を使用してマトリックスを作成するmatrixGenの2つのメソッドを作成しました。互換性のないタイプのエラーが発生します。誰かが私が間違っている可能性があることを正しい方向に向けてくれたら..私はまだ学習段階にあります..ここに私のコードがあります:

import java.util.Random;

public class sparse{
    static int matrix [][] = new int[6][6];

    public static int randomGen(){
        int rA;
        Random r = new Random();
        rA = r.nextInt(100);
        return rA;
    }

    public static int[][] matrixGen(){
        for(int i=0; matrix[i].length < i; i++){
            for(int j=0; matrix[j].length <j; j++){
                matrix[i] = matrix[i].randomGen();
                matrix[j] = matrix[j].randomGen();
            }
        }
        return matrix[i][j];
    }

    public static void main(String args[]){
        new sparse();
    }
}
4

4 に答える 4

7

randomGenを取り除き、これを使用します:

public static int[][] matrixGen(){
    Random r = new Random( );
    for(int i=0; i < matrix.length; i++){
        for(int j=0; j < matrix[i].length; j++){
            matrix[i][j] = r.nextInt( 100 );
        }
    }
    return matrix;
}

3(更新:4)もの:

  1. Random間違って使用しています。一度作成してから、たくさんの数字を取得する必要があります。
  2. intでrandomGenを呼び出そうとしていますが、これは意味がありません。のプロパティでありsparse、ではありませんint。あなたがした可能性がありますmatrix[i][j] = randomGen()
  3. 配列要素にアクセスするために、実際に非常に奇妙なことをしています。うまくいけば、このコードはあなたのためにそれを少しクリアするでしょう。
  4. あなたのループも奇妙です。このスニペットで修正しました。
于 2013-03-09T00:09:24.747 に答える
1

これ:

    matrix[i] = matrix[i].randomGen();
    matrix[j] = matrix[j].randomGen();

これである必要があります:

    matrix[i][j] = randomGen();
于 2013-03-09T00:10:54.960 に答える
0

あなたのmatrixGen方法は混乱しています。外側のforループは、内側の配列の長さではなく、配列iの長さに達したときに反復を停止する必要があります。同様に、内側のforループは、配列の長さに達したときに反復を停止する必要があります。matrixijmatrix[i]

2D配列の特定のスポットに値を割り当てる場合は、2つではなく1つの割り当てが必要です。の左側では、との両方=使用する必要があります。 ij

同じクラスで定義したので、をmatrix[i]呼び出すmatrix[j]前に置く必要はありません。randomGen

メソッドを呼び出していませんmatrixGen

于 2013-03-09T00:11:10.120 に答える
0

まず、提供されているコードでは、main使用しないオブジェクトを作成するため、何もしません。今後も継続されると思います。

あなたが得ているエラーに関しては、追加情報が提供されていないので、私も仮定を立てる必要があります。

発生しているエラーは、おそらくmatrixGenメソッドにあります。これは、静的マトリックスにデータを入力することになっていると思います。次のようになります。

public static void matrixGen(){
    for(int i=0; i < matrix.length; i++){
        for(int j=0; j < matrix[i].length; j++){
            matrix[i][j] = randomGen();
        }
    }
}
  1. void、マトリックスを変更していて、新しいマトリックスを作成していないため。
  2. ループ条件が間違っていました。インデックスは、それぞれの長さに達するまでインクリメントされます(i行とj列の場合)。
  3. 2つのインデックス(行と列)を使用してマトリックスセルにアクセスします。
  4. randomGenはからのメソッドでclass sparseあり、配列からのメソッドではありません。

編集:Random Daveが指摘したように、毎回新しいインスタンスを作成する必要はありません。この同じ方法で、マトリックスで行ったようにを変数に格納するかRandom、ループに入る前に作成します。

于 2013-03-09T00:14:42.243 に答える