2017-03-08 307 views
0

我的目標是乘矩陣和向量VEC:乘以向量和矩陣

public static int[] vectorProduct(int[][] a, int[] x){ 
    if(x.length != a[0].length) 
     throw new RuntimeException("Illegal matrix dimensions."); 
    int [] y = new int[a.length]; 
    for(int i = 0; i<y.length;i++){ 
     int sum=0; 
     for(int j = 0; j < a[0].length; j++){ 
      sum+= a[i][j] * x[j]; 
     } 
    } 
    return y; 
} 

我的主類看起來是這樣的:

public static void main(String[] args){ 
    int [][] d = { {1,2,3},{1,2,3},{1,2,3}}; 
    int [] vec = { 1,1,1 }; 

    System.out.println("Vector product of matrix A and vecor x: "); 
    int[] v = MatMath.vectorProduct(d, vec); 
    print(v); 
} 

我應該得到[3, 6,9],但我得到[0,0,0]作爲我的輸出。我究竟做錯了什麼?

+2

你永遠不會做的變量'sum'什麼。你可能應該把它放在你的'y'數組中,因爲你要返回它 – Gab

回答

3

你永遠不插入任何東西y陣列

int [] y = new int[a.length]; 
for(int i = 0 ; i < y.length ; i++){ 
    int sum = 0; 
    for(int j = 0 ; j < a[0].length ; j++){ 
     sum += a[i][j] * x[j];   
    } 
    y[i] = sum; 
} 
return y; 
+0

當我修復它,我得到[6,6,6]這不是正確的向量。正確的矢量是[3,6,9]。 hmm – onepunchman

+0

@onepunchman您正在總結'a'中的行。在[a] [i] [j]'sum + = a [j] [i] * x [j]中總結列開關'i'和'j';' – Guy

+0

nvm,它的運行良好!謝謝:) – onepunchman

0

您需要將值分配給數組y的指標 -

for(int i = 0; i<y.length;i++){ 
    int sum=0; 
    for(int j = 0; j < a[0].length; j++){ 
     sum+= a[i][j] * x[j]; 
    } 
    y[i] =sum; //this should help you assign the values 
} 
+0

請原諒downvote嗎? – nullpointer

1

我在做什麼錯?

你根本沒有給int array y分配任何值。

我應該得到[3,6,9],但我發現[0,0,0]作爲我的輸出

呀,因爲默認情況下的

所有元素
int 

陣列正在assinged到0