簡體   English   中英

打印從文本文件創建的數組

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM