打印从文本文件创建的数组

时间:2016-05-13 10:39:40

标签: java arrays string text-files

尝试使用文本文件中的行打印数组。

文字档案:

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

我做错了什么?

4 个答案:

答案 0 :(得分:1)

而不是Step 6 : RUN curl -H 'Cache-Control: no-cache' -f ${NEXUS_URL}${ARTIFACT_PATH}-${ARTIFACT_VERSION}.war?nocache=true -o $JBOSS_HOME/standalone/deployments/ROOT.war 30 ---> Using cache 31 ---> be50412bf6c3 试试这个:

System.out.println(Arrays.toString(l));

或没有循环:

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

Java 8:

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

答案 1 :(得分:1)

你没有做错任何事。问题是Arrays.toString()以您看到的格式返回数组的String表示。

如果您不需要数组,只需在阅读时输出行。

如果需要在数组中写入行(以检查其内容是否正确(?)),并且需要在新行中输出每个数组元素,只需更改打印数组的方式即可。而不是使用Arrays.toString()方法,使用类似:

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

对算法的改进是扫描文件一次,将其存储在Arraylist中,如果仍需要数组,则在此Arraylist上应用toArray()方法。

答案 2 :(得分:0)

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

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

答案 3 :(得分: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);
}}