Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-获取编译错误不兼容类型int can';不能转换为[][]_Java_Arrays_Matrix - Fatal编程技术网

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
更改为just
r

将方法声明中的
void
更改为
int[][]

在方法中添加一行
int[][]q并将
r[i][j]=rand
更改为
q[i][j]=rand


returnr
更改为
returnq

makeAndFillMatrix(int[]]r)
更改为
makeAndFillMatrix(int r)
您需要矩阵大小,它是一个整数,因此采用整数而不是多维数组

然后在for循环中,将
r.length
更改为just
r

将方法声明中的
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数组而不是int
    int[]]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数组而不是int
    int[]]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
    方法中,而是