2016-11-16 129 views
0

所以我想構造一個程序,它接收兩個矩陣的元素並給出這兩個矩陣的乘積。到目前爲止,我進行了一些嘗試,創建了一個矩陣並使用了「readInts」 - 手動。首先,我想確保程序實際上接收用戶輸入的元素,所以我想打印出第一個矩陣作爲整體(然後進一步,當然)。這包括在此代碼中:2維數組/矩陣的長度

int rows = readInt("Number of rows: "); 
int columns = readInt("Number of columns: "); 
int [][] m = new int[rows][columns]; 
int [] elements = readInts("Please type in the elements: "); 

for(int = 0; i < m.length; i++) { 
print(elements[i], 5); 
} 

現在,我還不明白的是我如何解釋「m.length」。經過一些測試後,我發現它指的是行數,所以例如當我定義3行並輸入數字1,2,3,4,5時,我只接收到1,2,3 ,所以程序切斷了其餘部分。我猜他實際上應該是指列的數量,所以當我定義m時,我不得不切換[rows]和[columns],但這是違反直覺的,因爲你總是首先命名行數。另外,我不知道遲早會不會出現其他問題。那麼,還有沒有在開始時切換[rows]和[columns]的方法呢?

+0

什麼是'readInt'和'readInts'?這些不是標準的Java方法... – assylias

+0

哦,我不知道。 「readInt」讀取一個整數,而「readInts」讀取多個整數。打印這些元素時,它們從一開始就位於同一行。 – Julian

+0

在繼續之前,您應該知道1件事。在java中,如果你創建了這樣的二維數組,那個數組不一定等價於矩陣。特別是如果你從控制檯逐行填充數組等等。二維數組只是一個數組類型的數組,每個數組的長度可能會不同,如果你不小心。 – halil

回答

1

因爲你知道行和列你可以做2循環。

int rows = readInt("rows"); 
int columns =readInt("columns"); 
int [][] m = new int[rows][columns]; 
for (int i = 0; i < rows; i++) { 
    int n[]=readInts("enter 3 numbers:"); 
    for (int k = 0; k < columns; k++) { 
     m[i][k] = n[k]; 
    } 
} 

沒有必要像我一樣使用掃描儀(在這裏工作不正常)。但 這應該會給你想要的結果,如果你閱讀正確的字符串

+0

這給了我「在線程中的異常」main「java.lang.ArrayIndexOutOfBoundsException:3在Matrix.main(Matrix.java:15)」。 – Julian

+0

哦,我看到了問題。我必須直接輸入9個數字。但實際上,用戶應該在行中輸入行數,所以他應該輸入3個數字,然後輸入,然後再輸入3個數字,依此類推。 – Julian

+0

並且該輸入只能存儲在m?還是在元素? – XtremeBaumer