如何仅显示名字?

时间:2013-05-28 12:03:31

标签: arrays java.util.scanner displaytag

data.txt文件包含:

Manyana, Michael, 30
Henderson, Marge, 22
Striker, Nancy, 32
Johnson, Fred, 12
Ryan, Renee, 22

我想知道如何仅显示名字并将其存储到新数组中。如何仅选择名字?例如,

Manyana
Henderson
Striker
Johnson
Ryan

提前致谢。

import java.io.*;
import java.util.Scanner;

public class multipleArray {
   private static Scanner file;

   public static String[] array = new String[500];

    public static void main(String[] args) throws FileNotFoundException {
        File myfile = new File("data.txt");
        file = new Scanner (myfile);
        Scanner s = file.useDelimiter(",");
        int i = 0;
        while (s.hasNext()) {
            i++;
            array[i] = s.next();
        }

        for(int j=0; j<array.length; j++) {
        if(array[j] == null)
            ;
        else
            System.out.print(array[j]);
    }
}

2 个答案:

答案 0 :(得分:1)

您正在i循环中递增while,之后您不会重置它,因此在for循环中您会看到i的最终值。< / p>

你应该这样做:

for(int j=0; j<array.length; j++)
        System.out.print(array[j]);

答案 1 :(得分:0)

首先,只使用“,”作为分隔符,您永远不会选择名字。这需要进一步分裂,这是可以避免的。

Scanner s = file.useDelimiter(","); //array[2]=="30\nHenderson" !

应改为:

Scanner s = file.useDelimiter(",|\\n");

然后你可以这样简单地打印名字:

for(int j=0; j<i; j+=3) {
     System.out.println(array[j]);
}

同样通过执行以下操作,您可以将数组的第一个字符串留空......

while (s.hasNext()) {
    i++;
    array[i] = s.next();
}

我建议:

while (s.hasNext()) {
    array[i] = s.next();
    i++;
}