2016-05-13 63 views
1

嘗試使用文本文件中的行打印陣列。打印從文本文件創建的陣列

文本文件:

Queen Greatest_Hits_I Rock 2011 UNI 17 58.19 

Madonna Music Pop 2000 Mavericks_Records 10 44.40 

Miles_Davies King_of_Blue Jazz 1959 Columbia_Records 6 45.44 

Charles_Bradley Changes Soul 2016 Daptone_Records 11 40.44 

David_Bowie Blackstar Rock 2016 ISO 7 41.13 

Queen Queen_II 

Prince Purple_Rain 

代碼:

public static void main(String[] args) throws FileNotFoundException{ 

    Scanner read = new Scanner(new File("C:\\CD.txt")); 
    int a=0,i=0; 
    while(read.hasNext()){ 
     a++; 
     read.nextLine(); 
    }read.close(); 

    String [] l = new String [a]; 
    read= new Scanner(new File("C:\\CD.txt")); 
    while(read.hasNext()){ 
     String n =read.nextLine(); 
     l[i]=n; 
     i++; 
    } 
    System.out.println(Arrays.toString(l)); 
} 

代碼輸出:

[Queen Greatest_Hits_I Rock 2011 UNI 17 58.19, Madonna Music Pop 2000 Mavericks_Records 10 44.40, Miles_Davies King_of_Blue Jazz 1959 Columbia_Records 6 45.44, Charles_Bradley Changes Soul 2016 Daptone_Records 11 40.44, David_Bowie Blackstar Rock 2016 ISO 7 41.13, Queen Queen_II, Prince Purple_Rain] 

輸出我想:

Queen Greatest_Hits_I Rock 2011 UNI 17 58.19 
Madonna Music Pop 2000 Mavericks_Records 10 44.40 
Miles_Davies King_of_Blue Jazz 1959 Columbia_Records 6 45.44 
Charles_Bradley Changes Soul 2016 Daptone_Records 11 40.44 
David_Bowie Blackstar Rock 2016 ISO 7 41.13 
Queen Queen_II 
Prince Purple_Rain 

我在做什麼錯?

+0

而不是將每行添加到數組,只需輸出該行。 –

回答

1

代替System.out.println(Arrays.toString(l));試試這個:

for (String line : l) { 
    System.out.println(line); 
} 

或者不循環:

System.out.println(StringUtils.join(l, "\n")); 

的Java 8:

Arrays.stream(l).forEach(System.out::println); 
1

你沒有做錯什麼。問題是Arrays.toString()以您看到的格式返回數組的字符串表示形式。

如果您不需要數組,只需在讀取它們時輸出這些行。

如果您需要編寫數組中的行(檢查其內容是否正確(?)),並且需要以新行輸出每個數組元素,只需更改打印數組的方式即可。而不是使用Arrays.toString()方法,使用這樣的:

public String toString(String[] array) { 
    for (String line : array) { 
     System.out.println(line); 
    } 
} 

到你的算法的改進將掃描文件一次,將其存儲在一個ArrayList,如果你仍然需要一個數組,應用指定者()方法在這個Arraylist上。

0

使用Java 8,您可以使用Stream API。

Stream.of(l).forEach(System.out::println); 
0

你簡化代碼所需的輸出:

 public static void main(String[] args) throws FileNotFoundException{ 

    Scanner read= new Scanner(new File("C:\\CD.txt")); 
     while(read.hasNext()){ 

      System.out.println(read.nextLine()); 
     } 
} 

另外,如果你想將文件存儲在某種集合,你可以使用ArrayList它,並且仍然得到所需的輸出。以下僅供參考:

public static void main(String[] args) throws FileNotFoundException{ 

ArrayList<String> arr = new ArrayList<String>(); 
Scanner read= new Scanner(new File("C:\\CD.txt")); 
while(read.hasNext()){ 

    arr.add(read.nextLine()); 

} 

for(String str : arr) 
{ 
    System.out.println(str); 
}}