有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java创建一个类型为class Matrix的方法来添加两个矩阵

所以,我应该用HashMap<Integer,ArrayList<Number>>做一个matrix,其中Number是一个类,它的实例变量是分子和分母。 Class Matrix继承{},它有{}、{}、{}和{}等方法,问题是在最后两个方法中,我做了它们,但我很确定它们是完全错误的,因为我得到了一个NullPointerException,我如何制作这样的方法? 这是代码

 public class Matrix extends Number implements Calculation
{
public static int rows;
public static int cols;
private ArrayList<Number> myArray;
private ArrayList<Double> myArray2;
private ArrayList<Double> myArray3;
private ArrayList<Double> myArray4;
private HashMap <Integer, ArrayList<Number>> hm;
private HashMap <Integer, ArrayList<Double>> hm2;

public Matrix(int r, int c)
{
    hm = new HashMap<>();
    hm2 = new HashMap<>();
    rows = r;
    cols = c;
}
public void fillMatrix()
{
    Scanner input = new Scanner(System.in);
    myArray = new ArrayList<>();
    myArray2 = new ArrayList<>();
    System.out.println("Enter the number of rows");
    rows = input.nextInt();
    System.out.println("Enter the number of columns");
    cols = input.nextInt();
    Number n = new Number();
    for (int i = 0; i < cols;i++)
    {
        n.setNumerator(i);
        n.setDenominator(i+1);
        myArray.add(new Number(i,i+1));
        double xn = n.getNumerator();
        double xd = n.getDenominator();
         myArray2.add(xn/xd);
    }               
    for (int i = 0; i < rows; i++)
    hm2.put(rows,myArray2);
}

public void printMatrix()
{ 
        for (int i = 0; i < rows; i++)
        {hm.put(rows,myArray);
         System.out.println(myArray3.toString());
        }
}
public Number getItem(int rowNO,int colNO)
{
    rows = rowNO - 1;
    cols = colNO - 1;
   hm.get(rows);
    return myArray.get(cols);
}
public void addMatrices(Matrix a, Matrix b)
{
   Matrix x1 = new Matrix(rows,cols);
   Matrix x2 = new Matrix(rows,cols);
   for(int i = 0; i < rows; i++)
   { x1.hm2.get(rows);
     x2.hm2.get(rows);
   for(int j = 0; j< cols;j++)
   {
     double a1 = x1.myArray2.get(cols);
     double a2 = x2.myArray2.get(cols);
     double sum = a1+a2;
     myArray3 = new ArrayList<>();
     myArray3.add(sum);         
   }
   x1=a;
   x2=b;
   }
}
public void subMatrices(Matrix a, Matrix b)
{
   Matrix x1 = new Matrix(rows,cols);
   Matrix x2 = new Matrix(rows,cols);
   for(int i = 0; i < rows; i++)
   { x1.hm2.get(rows);
   { x2.hm2.get(rows);
   for(int j = 0; j< cols;j++)
   {
     double a1 = x1.myArray2.get(cols);
     double a2 = x2.myArray2.get(cols);
     double sub = a1-a2;
     myArray4 = new ArrayList<>();
     myArray4.add(sub);         
   }
   x1=a;
   x2=b;
   }
 }

  }
  }

共 (1) 个答案

  1. # 1 楼答案

    我在这里有点困惑,所以我要指出我注意到的一些事情

    首先,由于变量名的原因,很难理解代码

    而且这些方法都不是静态的,所以我真的不明白为什么要引入两个矩阵进行计算,然后将它们设置为两个方法中创建的前两个

    接下来,在减法中的for循环后面有两个括号,我猜这只是在StackOverflow中粘贴时的一个输入错误

    要添加总和的myArray对象不会累加所有总和,因为每次循环都要创建一个新的arraylist。在循环之外创建它

    NullPointerException可能在任何地方,很难说,因为代码有点混乱

    我建议使用LWJGL库,它有Matrix4f之类的类和Matrix4f.add();之类的方法,这将帮助您实现这一点