将随机数传递给java中的2d数组

时间:2013-03-09 00:01:51

标签: java matrix 2d sparse-matrix

为什么我的代码中出现错误 - 我创建了两个方法,randomGen生成随机数,matrixGen创建随机数矩阵。我得到不兼容的类型错误。如果有人可以请我指出正确的方向我可能做错了什么..我还在学习阶段..继承我的代码:

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 个答案:

答案 0 :(得分: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. 你的循环也很奇怪。我已经在这个片段中修复了它们。

答案 1 :(得分:1)

这:

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

需要这样:

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

答案 2 :(得分:0)

您的matrixGen方法很混乱。您的外部i for循环需要在达到matrix数组的长度时停止迭代,而不是i内部数组的长度。同样,内部j for循环需要在达到matrix[i]数组的长度时停止迭代。

如果要为2D数组中的某个特定点分配值,则需要一个赋值,而不是两个赋值;在=的左侧,您需要使用 ij

在致电matrix[i]之前,您不需要matrix[j]randomGen,因为您在同一个班级中定义了它。

您甚至没有调用matrixGen方法。

答案 3 :(得分: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. 使用两个索引(行和列)访问矩阵单元;
  4. randomGenclass sparse的方法,而不是数组。
  5. 如Dave所述,

    编辑:,您不应每次都创建一个新的Random实例。将Random存储在变量中,就像使用矩阵一样,或者在进入循环之前以相同的方法创建它。