2015-12-21 84 views
0

我試圖理解stackoverflow上的相關問題,但沒辦法。我是新的Java。無法從int []轉換爲雙重錯誤java

有這樣的問題:

Type mismatch: cannot convert from int[] to double 

首先錯誤行,說:

return sumVect(sumVect3(A,B,C),multVectMatrix(D,multMatrix(MA,MD))); 

二錯誤行,說:

E=F1(A, B, C, D, MA, MD); 

而且我T1.java文件

public class T1 extends Data implements Runnable{ 
    protected T1(int N, int value) { 
     super(N, value); 
    } 
    public void run() { 
     int[][] MA, MD; 
     int[] A, B, C, D; 
     double E; 

     A = inputVector(); 
     B = inputVector(); 
     C = inputVector(); 
     D = inputVector(); 
     MA = inputMatrix(); 
     MD = inputMatrix(); 

     // Calculation F1 

     System.out.println("Calculator F1:...."); 
     try { 
      E=F1(A, B, C, D, MA, MD); 
      System.out.println("F1:"); 
      System.out.println("F1: " + E); 
     } catch (Exception f1) { 
      // TODO: handle exception 
      f1.printStackTrace(); 

      } 
} 

    private double F1(int[] A, int[] B, int[] C, int[] D, int[][] MA, int[][] MD) 
    { 
     return sumVect(sumVect3(A,B,C),multVectMatrix(D,multMatrix(MA,MD))); 
    } 

data.jav文件,可能有幫助,所以粘貼在這裏。

protected static int[][] multMatrix(int[][] MA, int[][] MB){ 
     int[][] MT = new int[MA.length][MA.length]; 
     for (int i = 0; i < MA.length; i++) { 
      for (int j = 0; j < MA.length; j++) { 
       int s = 0; 
       for (int k = 0; k < MA.length; k++) { 
        s += MA[i][k] * MB[k][j]; 
        MT[i][j] = s; 
       } 
      } 
     } 
     return MT; 
    } 

    protected static int multVect(int[] A, int[] B){ 

     int v=0; 
     for(int i =0;i<A.length;i++){ 
      v+=A[i]*B[i]; 

     } 
     return v; 
    } 

    protected static int[] sumVect(int[] A, int[] B){ 
     int[] Z = new int [A.length];  
     for(int i =0;i<A.length;i++){ 
      Z[i]=A[i]+B[i];  
     } 
     return Z; 
    } 

    protected static int[] sumVect3(int[] A, int[] B, int[] C){ 
     int[] Z = new int [A.length];  
     for(int i =0;i<A.length;i++){ 
      Z[i]=A[i]+B[i]+C[i];   
     } 
     return Z; 
    } 

protected static int[] multVectMatrix(int[] A, int[][] MA){ 
     int[] V = new int[A.length]; 
     for (int i = 0; i < A.length; i++) { 
      int s = 0; 
      for (int j = 0; j < A.length; j++) { 
       s += A[j]*MA[i][j]; 
      } 
      V[i] = s; 
     } 
     return V; 
    } 
+0

你可以發佈你的stacktrace嗎? – gandra404

+0

爲什麼你將一個向量賦值給double? – Manu

回答

0

sumVect方法返回的intint[])數組,但你想在你的F1方法返回它,這應該返回double。你應該弄清楚每種方法應該返回什麼,並使你的代碼保持一致。

private double F1(int[] A, int[] B, int[] C, int[] D, int[][] MA, int[][] MD) 
{ 
    // here you are returning an int[] when you should return a double 
    return sumVect(sumVect3(A,B,C),multVectMatrix(D,multMatrix(MA,MD))); 
} 
0

您sumVect函數返回一個int []表

,你F1()函數返回一個雙。

您可能有錯別字