2016-05-13 49 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); 
}}