矩阵加法java

时间:2011-12-31 08:30:08

标签: 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;
        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);
    }
}

4 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

  1. 声明getMatrix()抛出IOException。在main()中调用getMatrix()可以生成IOExceptions,这些IOExceptions需要被函数捕获或重新抛出。要解决此问题,可以声明main()抛出IOException。
  2. Arr的设计有点奇怪。您应该将它压缩到一个对象,比如一个名为arrProcessor的对象,而不是使用两个冗余对象obj1obj2。所以这些电话看起来像是:

    x=arrProcessor.getMatrix();
    y=arrProcessor.getMatrix();
    z=arrProcessor.findSum(x,y);
    arrProcessor.putMatrix(z);
    
  3. 更好的是,你应该将数组包装在对象中,而不是使用数组,比如在一个名为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 {/*...*/}
    }
    

    所以现在代码看起来像:

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

答案 2 :(得分:0)

答案 3 :(得分:0)

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

请检查:Linear Math Library

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