1

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]);
    }
}
4

2 回答 2

1

i您在循环中递增while,之后您不会重置它,因此在您的for循环中您会看到i.

你应该这样做:

for(int j=0; j<array.length; j++)
        System.out.print(array[j]);
于 2013-05-28T12:05:09.663 回答
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++;
}
于 2013-05-30T07:52:18.927 回答