[英]Printing an array created from a text file
尝试使用文本文件中的行打印数组。
文本文件:
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
我究竟做错了什么?
代替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);
您没有做错任何事。 问题在于Arrays.toString()
以您看到的格式返回数组的String表示形式。
如果不需要数组,只需在读取它们时输出这些行即可。
如果需要将行写到数组中(以检查其内容是否正确(?)),并且需要在换行中输出每个数组元素,只需更改打印数组的方式即可。 代替使用Arrays.toString()
方法,使用类似以下内容的方法:
public String toString(String[] array) {
for (String line : array) {
System.out.println(line);
}
}
对算法的一种改进是将文件扫描一次,将其存储在Arraylist中,如果仍然需要一个数组,则在此Arraylist上应用toArray()方法。
使用Java 8,您可以使用Stream API。
Stream.of(l).forEach(System.out::println);
具有所需输出的简化代码:
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);
}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.