преобразовать 2d двойной массив в 2d int массив - PullRequest
0 голосов
/ 09 марта 2011

Я хочу преобразовать двумерный двойной массив в другой двумерный массив целых чисел. Двойной массив заполнен значениями меньше 1. Что я хочу сделать, это создать новый массив int [] [] и, используя инструкцию if else, установить значения в новом массиве равными 1 и 0. Я опубликовал свою попытку но я не уверен, где инициализировать мой массив int, который называется intMatrix.

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;
}

Ребята, вы понимаете, что я делаю неправильно. Заранее спасибо, Jetnori.

Ответы [ 3 ]

1 голос
/ 09 марта 2011

Ваш if проверяет неправильный массив.

intMatrix [i] [y] = (int) speaRealMatrixArray [i] [y];будет всегда 0, если мы предположим, что значения в данной матрице <1. И в следующей строке вы проверите его значение, которое в любом случае должно быть 0.Удалите присвоение и проверьте speaRealMatrixArray [i] [y] <0,6 </p>

Также вы должны правильно инициализировать массив int.

1 голос
/ 09 марта 2011

Инициализируйте intMatrix правильно.

Также вместо

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

попробовать

if ( speaRealMatrixArray[i][y] < 0.6) {
    intMatrix[i][y] = 0;
} else {
    intMatrix[i][y] = 1;
}
1 голос
/ 09 марта 2011
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++){
...
...