2016-05-13 5 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));この試してください:あなたは何も悪いことをしていない

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

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

またはループなし:

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

のJava 8を。問題は、Arrays.toString()が、表示される形式で配列の文字列表現を返すことです。

アレイを必要としない場合は、読み込んだ行だけを出力してください。

行を配列に書き込む必要がある場合(その内容が正しいかどうかを確認するため)、各行要素を新しい行に出力する必要がある場合は、配列の出力方法を変更してください。代わりにArrays.toString()方法を使用しての、のようなものを使用します。あなたのアルゴリズムに

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

改善を、一度ファイルをスキャンのArrayListに格納すると、あなたはまだ配列が必要な場合は、内のtoArray()メソッドを適用することであろうこの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); 
}} 
関連する問題