理解编译错误有困难。主应该保持不变。我相信MakeandFillMatix方法是问题所在,我无法解决它。我想这就是我创造这个方法的方式。
import java.util.*;
/*
*/
public class TesterProject
{
public static void main(String [] args)
{
int n = getMatrixSize();
int[][] m = makeAndFillMatrix(n);
printMatrix(m);
}
public static int getMatrixSize()
{
Scanner S = new Scanner(System.in);
System.out.println("give me a int to create the matrix");
int n = S.nextint();
return n;
}
public static void makeAndFillMatrix(int [][] r)
{
Random generator = new Random(5);
int rand = generator.nextInt(10);
for(int i = 0; i < r.length; i++)
{
for(int j = 0; j < r; j++)
{
r[i][j]= rand;
}
}
return r;
}
public static void printMatrix(int [][] matrix)
{
for(int r = 0; r < matrix.length; r++)
{
for(int c = 0; c < matrix[r].length; c++)
{
System.out.print(matrix[r][c] + " ");
}
System.out.println();
}
}
}发布于 2017-04-16 08:04:44
将makeAndFillMatrix(int[][] r)更改为makeAndFillMatrix(int r),您需要矩阵大小,它是一个整数,所以采用整数而不是多维数组。
然后在for循环中,将r.length更改为r
在方法声明中将void更改为int [][]。
在方法中添加一行int[][] q;并将r[i][j] = rand更改为q[i][j] = rand
并将return r更改为return q
发布于 2017-04-16 08:11:20
您正在尝试将'int‘(在主函数中)转换为'int’( 'makeAndFillMatrix‘的参数)。此外,makeAndFillMatrix还返回“void”。
我相信你想把你的函数重写成这样的东西:
public static int[][] makeAndFillMatrix(int r)
{
// Create a new matrix
int[][] matrix = new int[r][r];
// Get a random value
Random generator = new Random(5);
int rand = generator.nextInt(10);
// Assign random value to each cell of the matrix
for(int i = 0; i < r; i++)
{
for(int j = 0; j < r; j++)
{
r[i][j] = rand;
}
}
// Return the matrix
return matrix;
}发布于 2017-04-16 08:17:45
您正在接收的错误是由于您调用
int[][] m = makeAndFillMatrix(n);在你的主要方法中。
您在上面的行中将n设置为int,这意味着n是一个数字,但是,makeAndFillMatrix(int[][])接受ints的2d数组(顺便说一句,2d数组是一个矩阵)。
如果要生成用户输入的大小矩阵,则不需要将n传递到makeAndFillMatrix方法中,而是需要传递大小为n的矩阵。你可以用两种方式来做。选项1是将矩阵传递给makeAndFillMatrix方法,如下所示:
public static void main(String [] args)
{
int n = getMatrixSize();
int[][] m = makeAndFillMatrix(new int[n][n]); // new int matrix of size n
printMatrix(m);
}或者(在我看来,更传统的方法),您可以给makeAndFillMatrix矩阵的大小(就像您正在做的那样),您可以让makeAndFillMatrix制作数组:
public static void makeAndFillMatrix(int matrixSize)
{
int[][] r = new int[matrixSize][matrixSize];
Random generator = new Random(5);
int rand = generator.nextInt(10);
for(int i = 0; i < r.length; i++)
{
for(int j = 0; j < r[i].length; j++) //~~~I modified this line as well~~~
{
r[i][j]= rand;
}
}
return r;
}无论如何,您可以自行选择解决这个问题的方法,但是无论如何,我注意到您的方法有一个错误。
您的内部for循环最初是for(int j = 0; j < r; j++),但r是一个矩阵。对于内部循环,您需要增加j,直到它达到矩阵中当前行的大小,所以我也更改了该行。(在printMatrix方法中,内环是正确的。)无论您对第一个问题采用哪种方法,您的makeAndFillMatrix方法中的内部循环都需要进行修改。
我希望这能帮到你!
https://stackoverflow.com/questions/43435057
复制相似问题