Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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 矩阵加法_Java - Fatal编程技术网

Java 矩阵加法

Java 矩阵加法,java,Java,我写了这个矩阵加法程序,我不知道为什么,但我在第61行和第63行不断得到这两个错误,我不想处理异常,但只要抛出就可以了 error: unreported exception IOException; must be caught or declared 程序代码如下: import java.io.*; class Arr { int r,c; int arr[][]; Arr(int r,int c) { this.r=r;

我写了这个矩阵加法程序,我不知道为什么,但我在第61行和第63行不断得到这两个错误,我不想处理异常,但只要抛出就可以了

error: unreported exception IOException; must be caught or declared
程序代码如下:

import java.io.*;
class Arr
{
    int r,c;
    int arr[][];

    Arr(int r,int c)
    {
        this.r=r;
        this.c=c;
        arr=new int[r][c];
    }

    int[][] getMatrix()throws IOException
    {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                System.out.println("enter element");
                arr[i][j]=Integer.parseInt(br.readLine());
            }
        }
        return arr;
    }

    int[][] findsum(int a[][],int b[][])
    {
        int temp[][]=new int[r][c];
        for(int i=0;i<r;i++)
            for(int j=0;j<c;j++)
                temp[i][j]=a[i][j]+b[i][j];
        return temp;
    }

    void putmatrix(int res[][])
    {
        for(int i=0;i<r;i++)
        {
            for(int j=0;j<c;j++)
            {
                System.out.println(res[i][j]+"\t");
            }
        }
        System.out.println();
    }

}


class Matrixsum
{
    public static void main(String args[])
    {
        Arr obj1=new Arr(3,3);
        Arr obj2=new Arr(3,3);

        int x[][],y[][],z[][];
        System.out.println("\nEnter matrix 1");
        x=obj1.getMatrix();
        System.out.println("Enter matrix 2");
        y=obj2.getMatrix();
        z=obj1.findsum(x,y);
        System.out.println("the sum matrix is");
        obj2.putmatrix(z);
    }
}
import java.io.*;
类Arr
{
int r,c;
int arr[][];
Arr(内部r,内部c)
{
这个。r=r;
这个.c=c;
arr=新整数[r][c];
}
int[]getMatrix()引发IOException
{
BufferedReader br=新的BufferedReader(新的InputStreamReader(System.in));

对于(int i=0;i,因为getMatrix抛出IOException,它必须被捕获或声明为由main抛出

在您的情况下,最简单的解决方案是在main上声明它

public static void main(String... args) throws IOException

因为getMatrix抛出IOException,它必须被捕获或声明为由main抛出

在您的情况下,最简单的解决方案是在main上声明它

public static void main(String... args) throws IOException
  • 声明getMatrix()以引发IOException。在main()中调用getMatrix()可以生成IOException,函数或rethrown需要捕获这些IOException。要解决此问题,可以声明main()以引发IOException
  • Arr
    的设计有点奇怪。与其使用两个冗余对象
    obj1
    obj2
    ,不如将其压缩为一个对象,比如一个称为arrProcessor的对象。因此调用如下所示:

    x=arrProcessor.getMatrix();
    y=arrProcessor.getMatrix();
    z=arrProcessor.findSum(x,y);
    arrProcessor.putMatrix(z);
    
    Matrix x,y,z;
    x=Matrix.getMatrix(3,3);
    y=Matrix.getMatrix(3,3);
    z=x.plus(y);
    z.print();
    
  • 更好的是,您不应该使用数组,而应该将数组包装在对象中,例如在一个名为Matrix的类中:

    public class Matrix{
        int[][] values;
        int numRows, numCols;
    
        protected Matrix(){/*...*/}
    
        public static Matrix getMatrix(int nRows, int nCols){/*...*/}
        public static Matrix addMatrices(Matrix a, Matrix b) throws Exception {/*...*/}
    
        public void print(){/*...*/}
        public void plus(Matrix another) throws Exception {/*...*/}
    }
    
    现在代码看起来像:

    x=arrProcessor.getMatrix();
    y=arrProcessor.getMatrix();
    z=arrProcessor.findSum(x,y);
    arrProcessor.putMatrix(z);
    
    Matrix x,y,z;
    x=Matrix.getMatrix(3,3);
    y=Matrix.getMatrix(3,3);
    z=x.plus(y);
    z.print();
    
  • 声明getMatrix()以引发IOException。在main()中调用getMatrix()可以生成IOException,函数或rethrown需要捕获这些IOException。要解决此问题,可以声明main()以引发IOException
  • Arr
    的设计有点奇怪。与其使用两个冗余对象
    obj1
    obj2
    ,不如将其压缩为一个对象,比如一个称为arrProcessor的对象。因此调用如下所示:

    x=arrProcessor.getMatrix();
    y=arrProcessor.getMatrix();
    z=arrProcessor.findSum(x,y);
    arrProcessor.putMatrix(z);
    
    Matrix x,y,z;
    x=Matrix.getMatrix(3,3);
    y=Matrix.getMatrix(3,3);
    z=x.plus(y);
    z.print();
    
  • 更好的是,您不应该使用数组,而应该将数组包装在对象中,例如在一个名为Matrix的类中:

    public class Matrix{
        int[][] values;
        int numRows, numCols;
    
        protected Matrix(){/*...*/}
    
        public static Matrix getMatrix(int nRows, int nCols){/*...*/}
        public static Matrix addMatrices(Matrix a, Matrix b) throws Exception {/*...*/}
    
        public void print(){/*...*/}
        public void plus(Matrix another) throws Exception {/*...*/}
    }
    
    现在代码看起来像:

    x=arrProcessor.getMatrix();
    y=arrProcessor.getMatrix();
    z=arrProcessor.findSum(x,y);
    arrProcessor.putMatrix(z);
    
    Matrix x,y,z;
    x=Matrix.getMatrix(3,3);
    y=Matrix.getMatrix(3,3);
    z=x.plus(y);
    z.print();
    

    嘿,我建议你买这个。

    嘿,我建议你买这个。

    如果你厌倦了用矩阵编写自己的代码,只需下载我开发的库。它可以加法、乘法、求逆、转发器、计算行列式和解线性系统

    请检查:


    这是一个开源软件,你也可以下载源代码,看看它是如何工作的。

    如果你厌倦了用矩阵编写自己的代码,只需下载我开发的库。它可以加法、乘法、求逆、换位、计算行列式和解线性系统

    请检查:


    这是开源的,您也可以下载源代码并查看其工作原理。

    @user667405:如果答案有帮助,您可以通过向上投票表示,如果它解决了您的问题,您可以接受它。无需为此留下评论。@user667405:如果答案有帮助,您可以向上投票表示,如果它解决了您的问题,您可以接受它我们的问题。没必要就此发表评论。