2015-02-08 81 views
1

我的目标是:将文件中的每一段数据放入一个数组中。然后将该数组传递给主方法,以便我可以调用我需要的任何一段数据,并在必要时添加它。如何将文件中的数据读入数组?

我现在在哪里:我创建了文件和它的内容,并将它们放入一个数组中。当我尝试从我的main方法调用并打印数组时,我得到[Ljava.lang.String; @ 6dd4ea6c 这是什么?为什么它不让我将数组打印到控制台?

帮助?

我的代码:

/** 
Add in javadoc comments 
*/ 


//import statements 
    import java.io.*; 
    import java.util.Scanner; 
    import java.util.ArrayList; 

public class Try { 

    public static void main(String[] args){ 
     fileSetUp(); 
     System.out.println(fileSetUp()); 
    } 

    public static void createFile(){ 
     //create file holding inventory information 
     try{ 
      PrintWriter outputFile = new PrintWriter("inventory.txt"); 
      outputFile.println("3000.0"); 
      outputFile.println("Lamps 15.3 400"); 
      outputFile.println("Chairs 19.95 250"); 
      outputFile.print("Desks 95.0 300"); 
      int i =0; 
      outputFile.close(); 
     } 
     catch(IOException e){ 
     System.out.println("File cannot be created."); //????? 
     } 
    } 
    public static String[] fileSetUp(){ 
     //load the file information 
     String[] data = new String[10]; 
     try{ 
      File file = new File("inventory.txt"); 
      Scanner inFile = new Scanner(file); 
      for(int i=0; i<data.length; i++){ 
       data[i] = (inFile.next()); 
      } 
      inFile.close(); 
     } 
     catch(FileNotFoundException e){ 
      System.out.println("Cannot find file."); 
     } 
     return data; 
    } 
} 
+1

阵列不有一个名为“添加”的方法,把“数据”的声明在try块之外,如果你想添加元素阵列,采用赋值数据[I] = inFile.next()。 – Anil 2015-02-08 18:38:35

+0

使用java.nio.file和'Files.readAllLines()',你的工作会更容易 – fge 2015-02-08 18:44:14

+0

这个“java.lang.String; @ 6dd4ea6c”表示你的内存位置。使用toString()方法获取数组中的值。 – 2015-02-08 18:54:18

回答

0

由于数据线为导向,以 “讨巧”:

public static String[] getDataFromFile(final String filename) 
    throws IOException 
{ 
    final Path path = Paths.get(filename); 
    final List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8); 
    return lines.toArray(new String[lines.size()]); 
} 

或者只是使用的List而不是数组。


至于:

当我尝试打电话,从我的主要方法打印数组,我得到[Ljava.lang.String; @ 6dd4ea6c

这是数组的字符串表示形式。如果你想要的元素使用Arrays.toString()你的数组。或者,再次使用List

0

Java中的数组是对象,但它们不覆盖toString()方法。因此,当你尝试打印它们时,你会得到toString()的默认实现,它基本上是对象类型和它的hashCode()的连接。要正确打印,您可以使用Arrays.toString(Object[])

public static void main(String[] args){ 
    String[] arr = fileSetUp(); 
    System.out.println(Arrays.toString(arr)); 
}