Java-获取编译错误不兼容类型int can';不能转换为[][]
无法理解编译错误。主管道应保持不变。我认为Java-获取编译错误不兼容类型int can';不能转换为[][],java,arrays,matrix,Java,Arrays,Matrix,无法理解编译错误。主管道应保持不变。我认为MakeandFillMatix方法是问题所在,我无法解决。我想这就是我创建方法的方式 import java.util.*; /* */ public class TesterProject { public static void main(String [] args) { int n = getMatrixSize(); int[][] m = makeAndFillMatrix(n);
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();
}
}
}
import java.util.*;
/*
*/
公共类测试员项目
{
公共静态void main(字符串[]args)
{
int n=getMatrixSize();
int[]m=makeAndFillMatrix(n);
打印矩阵(m);
}
公共静态int getMatrixSize()
{
扫描仪S=新的扫描仪(System.in);
System.out.println(“给我一个int来创建矩阵”);
int n=S.nextint();
返回n;
}
公共静态void makeAndFillMatrix(int[]r)
{
随机发生器=新随机(5);
int rand=发电机下一个(10);
对于(int i=0;i
将makeAndFillMatrix(int[][]r)
更改为makeAndFillMatrix(int r)
您需要矩阵大小,它是一个整数,因此采用整数而不是多维数组
然后在for循环中,将r.length
更改为justr
将方法声明中的void
更改为int[][]
在方法中添加一行int[][]q代码>并将r[i][j]=rand
更改为q[i][j]=rand
将returnr
更改为returnq
将makeAndFillMatrix(int[]]r)
更改为makeAndFillMatrix(int r)
您需要矩阵大小,它是一个整数,因此采用整数而不是多维数组
然后在for循环中,将r.length
更改为justr
将方法声明中的void
更改为int[][]
在方法中添加一行int[][]q代码>并将r[i][j]=rand
更改为q[i][j]=rand
并将返回r
更改为返回q
提示
您的代码中有许多问题:
int n=S.nextint()代码>应该是int n=S.nextInt()代码>带上I
对于(intj=0;j
我想对于(intj=0;j
void makeAndFillMatrix(int[][]r)
它不会返回任何东西,并且最终返回一个数组makeAndFillMatrix(int[]]r)
采用2D数组而不是intint[]]m=makeAndFillMatrix(n);
编辑 然后您必须将代码更改为如下所示:
public static void main(String[] args) {
int n = getMatrixSize();
int[][] m = makeAndFillMatrix(n);//<<<----Problem 4
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();//<<--------------Problem 1
return n;
}
public static int[][] makeAndFillMatrix(int n) {//<<<---Problem 3
Random generator = new Random(5);
int[][] r = new int[n][n];
int rand = generator.nextInt(10);
for (int i = 0; i < r.length; i++) {
for (int j = 0; j < i; j++) {//<<<-----------Problem 2
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();
}
}
publicstaticvoidmain(字符串[]args){
int n=getMatrixSize();
int[][]m=makeAndFillMatrix(n);//提示
您的代码中有许多问题:
int n=S.nextint();
它应该是int n=S.nextint();
带上I
对于(intj=0;j
我想对于(intj=0;j
void makeAndFillMatrix(int[][]r)
它不会返回任何东西,并且最终返回一个数组makeAndFillMatrix(int[]]r)
采用2D数组而不是intint[]]m=makeAndFillMatrix(n);
编辑 然后您必须将代码更改为如下所示:
public static void main(String[] args) {
int n = getMatrixSize();
int[][] m = makeAndFillMatrix(n);//<<<----Problem 4
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();//<<--------------Problem 1
return n;
}
public static int[][] makeAndFillMatrix(int n) {//<<<---Problem 3
Random generator = new Random(5);
int[][] r = new int[n][n];
int rand = generator.nextInt(10);
for (int i = 0; i < r.length; i++) {
for (int j = 0; j < i; j++) {//<<<-----------Problem 2
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();
}
}
publicstaticvoidmain(字符串[]args){
int n=getMatrixSize();
int[][]m=makeAndFillMatrix(n);//您试图将“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;
}
publicstaticint[]makeAndFillMatrix(intr)
{
//创建一个新的矩阵
int[][]矩阵=新的int[r][r];
//获取一个随机值
随机发生器=新随机(5);
int rand=发电机下一个(10);
//将随机值分配给矩阵的每个单元格
对于(int i=0;i
您试图将“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;
}
publicstaticint[]makeAndFillMatrix(intr)
{
//创建一个新的矩阵
int[][]矩阵=新的int[r][r];
//获取一个随机值
随机发生器=新随机(5);
int rand=发电机下一个(10);
//将随机值分配给矩阵的每个单元格
对于(int i=0;i
您收到的错误是由于您呼叫
int[][] m = makeAndFillMatrix(n);
在你的主要方法中
您在上面的一行中将n
设置为int
,意思是n是一个数字,但是,makeAndFillMatrix(int[])
接受一个由int
s组成的二维数组(顺便说一下,二维数组是一个矩阵)
如果要生成用户输入的大小的矩阵,则不要将n
传递到makeAndFillMatrix
方法中,而是