为什么我的代码中出现错误 - 我创建了两个方法,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();
}
}
答案 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)事情:
Random
错误。您应该创建一次,然后从中获取大量数字。sparse
的属性,而不是int
。你本可以做matrix[i][j] = randomGen()
。答案 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数组中的某个特定点分配值,则需要一个赋值,而不是两个赋值;在=
的左侧,您需要使用 i
和j
。
在致电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();
}
}
}
void
,因为您正在修改矩阵,而不是创建新矩阵; i
和列的j
; randomGen
是class sparse
的方法,而不是数组。 编辑:,您不应每次都创建一个新的Random
实例。将Random
存储在变量中,就像使用矩阵一样,或者在进入循环之前以相同的方法创建它。