2011-03-08 5 views
0

Je souhaite convertir un tableau matriciel 2D en un tableau 2D d'entiers. Le tableau double est rempli avec des valeurs inférieures à 1. Ce que je veux faire est de créer un nouveau tableau int [] [] et, en utilisant une instruction if else, mettre les valeurs dans le nouveau tableau à 1 et 0. J'ai posté ma tentative mais je ne sais pas où initialiser mon tableau int qui s'appelle intMatrix.convertir un tableau double 2d en un tableau int 2d

public int[][] readCorrMatrix(){ 

    String filename=ReadFile.getPath(); 
    double[][]rawDataMatrix=ReadMatrix.readDataMatrix(filename, ","); 
    RealMatrix speaRealMatrix=Spearmans.calcSpearMatrix(rawDataMatrix); 
    double[][]speaRealMatrixArray=speaRealMatrix.getData(); 
    int[][]intMatrix=null; 
    for(int i=0; i<speaRealMatrixArray.length;i++){ 
     for(int y=0; y<speaRealMatrixArray[i].length;y++){ 

      intMatrix[i][y]=(int)speaRealMatrixArray[i][y]; 
      if(speaRealMatrixArray[i][y]<0.6) 
      { 
       intMatrix[i][y]=0; 
      } 
       else 
       { 
        intMatrix[i][y]=1; 
       }    
     } 
    } 
    return intMatrix; 
} 

Est-ce que vous avez une idée de ce que je fais de mal? Merci d'avance, Jetnori.

+0

Désolé pardonne mes dactylographiques. Je veux dire que je veux convertir un double tableau 2d en un autre tableau 2d int. Merci. – Jetnor

+0

Merci mat, va faire. J'essaie de répondre à tout le monde pour dire merci. Je vais certainement utiliser suivre vos conseils. – Jetnor

Répondre

1
int[][]intMatrix= new int[speaRealMatrixArray.length][]; 
... 
for(int i=0; i<speaRealMatrixArray.length;i++){ 
     intMatrix[i] = new new int[speaRealMatrixArray[i].length]; 
     for(int y=0; y<speaRealMatrixArray[i].length;y++){ 
... 
1

Votre if vérifie le mauvais tableau.

intMatrice [i] [y] = (int) speaRealMatrixArray [i] [y]; sera toujours 0 si nous supposons que les valeurs dans la matrice donnée sont < 1. Et dans la ligne suivante vous vérifiez sa valeur qui doit être 0 de toute façon. Supprimez l'affectation et vérifiez speaRealMatrixArray [i] [y] < 0,6

Vous devez également initialiser le tableau int correctement.

1

Initialisez intMatrix correctement.

également au lieu de

intMatrix[i][y] = (int) speaRealMatrixArray[i][y]; 
if (intMatrix[i][y] < 0.6) { 
    intMatrix[i][y] = 0; 
} else { 
    intMatrix[i][y] = 1; 
} 

essayer

if (speaRealMatrixArray[i][y] < 0.6) { 
    intMatrix[i][y] = 0; 
} else { 
    intMatrix[i][y] = 1; 
} 
+0

Merci compagnon. Cela a du sens maintenant. La déclaration ci-dessus le si n'était pas du tout utile. – Jetnor