程序编译但不能正确写入文件

时间:2013-09-23 21:48:38

标签: java methods return writetofile

程序编译但是当它写入文件时会出现这种情况:

  

[[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

2 个答案:

答案 0 :(得分:3)

Arrays.toString()只会为第一个数组创建一个字符串。 locations是一个多维数组(数组值包含另一个数组)。

您应该尝试使用Arrays.deepToString()

  

返回。的“深层内容”的字符串表示形式   指定的数组。如果数组包含其他数组作为元素,则   字符串表示包含其内容等。这种方法   用于将多维数组转换为字符串。

答案 1 :(得分:1)

请尝试使用Arrays.deepToString代替,

  

返回。的“深层内容”的字符串表示形式   指定的数组。如果数组包含其他数组作为元素,则   字符串表示包含其内容等。 此方法   用于将多维数组转换为字符串

然而,假设您不希望以特定格式打印数字。在这种情况下,您可能会选择循环元素并使用所需的格式打印它们。

在我看来,上述方法对日志记录/调试操作非常有用。