程序编译但是当它写入文件时会出现这种情况:
[[D @ 92ca580,[D @ 52257b34,[D @ 1abbbd0e,[D @ 1b78efd8 .....并且它一直在继续
我的代码有什么问题?我把它正确地构造了吗? 另外,在main方法中调用writefile方法时,我是否正确执行了该操作?
UPDATE ** 我把它修好了,现在这个文件出现了:
[[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0],[0.0,0.0] ......
我认为问题是我没有直接调用writefile方法..这是为什么?我该如何解决?
import java.io.*;
public class j4 {
public static void main (String [] args) throws IOException
{
int numpoints = 100, dimension = 2, length = 100;//numpoints is set to 100, dimension is set to 2, length is set to 100
//arrays are initializewd and declared
double [] lengthscale = new double [dimension];
double [][] locations = new double [numpoints][dimension];
PrintWriter fileOut = new PrintWriter (new FileWriter ("arrayNumPoints.txt"));
for(int m=0; m <length; m++){//for loop
fileOut.println(java.util.Arrays.toString(locations) + ", ");//writes to file
}
fileOut.close ();//close file
}//end main
public static Double writefile(Double locations[][], Double lengthscale[], int dimension, int numpoints, Double length)throws IOException
{
for (int a = 0; a < dimension; a++){//for loop runs while a is less than dimension
lengthscale[a] = length;//stores array
}//end for loop
for (int x=0; x < numpoints; x++){//for loop runs while x is less than numpoints
for (int y=0; y < dimension; y++){//nested for loop runs while y is less than dimension
locations [x][y]= (2 * Math.random() - 1) * lengthscale[y];//creates the range and choses random point within
return locations[x][y];
}//end nested for loop
}//end for loop
//if program doesnt run through loop.. alternative return statement (but
double b= 1;
return b;
}//end writefile methos
}//end class
答案 0 :(得分:3)
Arrays.toString()
只会为第一个数组创建一个字符串。 locations
是一个多维数组(数组值包含另一个数组)。
您应该尝试使用Arrays.deepToString()
:
返回。的“深层内容”的字符串表示形式 指定的数组。如果数组包含其他数组作为元素,则 字符串表示包含其内容等。这种方法 用于将多维数组转换为字符串。
答案 1 :(得分:1)
请尝试使用Arrays.deepToString
代替,
返回。的“深层内容”的字符串表示形式 指定的数组。如果数组包含其他数组作为元素,则 字符串表示包含其内容等。 此方法 用于将多维数组转换为字符串。
然而,假设您不希望以特定格式打印数字。在这种情况下,您可能会选择循环元素并使用所需的格式打印它们。
在我看来,上述方法对日志记录/调试操作非常有用。