2015-02-08 76 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)); 
}