我不是在節目非常好,但我不得不寫這兩種方法計算兩個矩陣的乘積的程序:產品
直接的方式第一種方法。
第二次使用線程,以便計算時間最短。
我寫了這個程序的第一種方法:
Matrix.java
public class Matrix {
public int [][] M;
public int line,col;
static int [][]MProd=null;
//Constructeur
public Matrix (int [][] M,int line,int col) {
this.M=M;
this.col=col;
this.line=line;
for (int i=0;i<this.line;i++){
for (int j=0;j<this.col;j++)
{
M[i][j]=(int)(Math.random()*100);}}
}
static int [][] prod(Matrix Mat1, Matrix Mat2){
for (int j=0;j<Mat2.col;j++){
for (int i=0;i<Mat1.col;i++){
for (int k=0;k<Mat1.line;k++){
MProd[k][j] += Mat1.M[k][i]*Mat2.M[i][j];
}}}
return MProd ;
}}
Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
int [][] M = null,N = null;
int line1,line2,col1,col2;
int [][] P=null;
Scanner scanner = new Scanner(System.in);
System.out.println("enter the line number of the first matrix");
line1=scanner.nextInt();
System.out.println("enter the number of columns of the first matrix");
col1=scanner.nextInt();
Matrix Mat= new Matrix (M,line1,col1);
System.out.println("enter the line number of the 2nd matrix");
line2=scanner.nextInt();
System.out.println("enter the number of columns of the 2nd matrix");
col2=scanner.nextInt();
Matrix Mat1= new Matrix (N,line2,col2);
if (col1==line2)
{
P=Matrix.prod(Mat,Mat1) ;
System.out.println("matrix product :");
for (int i=0;i<Mat.line;i++)
{
for (int j=0;j<Mat1.col; j++)
System.out.print(+ P[i][j]+" ");
System.out.println();
}}
else {
System.out.println("the matrices product is impossible");
}
}}
當我運行該程序就說明我:
在線程異常 「主」 顯示java.lang.NullPointerException 在矩陣。(Matrice.java:18) 在Main.main(Main.java:15)
有人可以幫我糾正這個程序,並告訴我如何用線程編寫這個程序?
您之前已經發布過,因此您瞭解該演練:1)請說明您的意思是「無效」。 2)請問具體的問題,作爲第二個問題,「......如何用線程編寫這個程序」太寬泛了,真的不是一個可以回答的問題。你必須問清楚你有什麼特別的困惑,因爲你肯定已經閱讀過這個主題並有一些想法。 –
@HovercraftFullOfEels這是我第一次在這裏發帖:) – Med
啊,你的分數騙了我。然後抱怨生硬,但是,如果你努力改善你的問題,我認爲它會爲你和我們提供幫助。再次,「不起作用」給我們很少的信息,我們可以用它來幫助你。再次,你的問題的第二部分太寬泛了。顯示代碼嘗試後,我們會更好地回答特定的尖銳問題。 –