我想将2d双数组转换为另一个2D整数数组。 double数组填充的值小于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。
答案 0 :(得分: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 :(得分:1)
你的if是检查错误的数组。
intMatrix [I] [Y] =(int)的speaRealMatrixArray [I] [Y];如果我们假设给定矩阵中的值是&lt; 1.在下一行,你检查它的值,无论如何必须为0。删除作业并检查speaRealMatrixArray [i] [y]&lt; 0.6
此外,您必须正确初始化int数组。
答案 2 :(得分:1)
正确初始化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;
}