如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?

时间:2013-05-30 07:07:22

标签: java arrays delimiter filereader

包含

的简单数据文件
1908,Souths,Easts,Souths,Cumberland,Y,14,12,4000
1909,Souths,Balmain,Souths,Wests,N

每条线代表一个英超赛季,具有以下格式:年份,总决赛,亚军,小型总决赛,木制打手,总决赛,获胜分数, 失去分数,人群

我知道如何将数据存储到数组中并使用分隔符,但我不确定如何通过逗号将EACH数据项存储到单独的数组中?一些建议和使用的特定代码会很好。

更新: 我只是添加了代码,但它仍然无法正常工作。这是代码:

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

public class GrandFinal {
    public static Scanner file;
    public static String[] array = new String[1000];

    public static void main(String[] args) throws FileNotFoundException {
        File myfile = new File("NRLdata.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 if(array[j].contains("Y"))
                System.out.println(array[j] + " ");
        }
    }
}

2 个答案:

答案 0 :(得分:2)

你走了。使用ArrayList。它的动态方便

    BufferedReader br = null;
    ArrayList<String> al = new ArrayList();
    String line = "";

    try {

        br = new BufferedReader(new FileReader("NRLdata.txt"));

        while ((line = br.readLine()) != null) {
            al.add(line);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

    for (int i = 0; i < al.size(); i++) {
        System.out.println(al.get(i));
    }

在您的情况下什么不起作用?

因为您的season数组为空。您需要定义长度,例如:

private static String[] season = new String[5];

这是不对的,因为您不知道要存储多少行。这就是为什么我建议您使用ArrayList

答案 1 :(得分:0)

稍微解决了一下后,我想出了以下代码:

private static File file;
private static BufferedReader counterReader = null;
private static BufferedReader fileReader = null;

public static void main(String[] args) {
    try {
        file = new File("C:\\Users\\rohitd\\Desktop\\NRLdata.txt");
        counterReader = new BufferedReader(new FileReader(file));
        int numberOfLine = 0;
        String line = null;
        try {
            while ((line = counterReader.readLine()) != null) {
                numberOfLine++;
            }

            String[][] storeAnswer = new String[9][numberOfLine];
            int counter = 0;

            fileReader = new BufferedReader(new FileReader(file));

            while ((line = fileReader.readLine()) != null) {
                String[] temp = line.split(",");
                for (int j = 0; j < temp.length; j++) {
                    storeAnswer[j][counter] = temp[j];
                    System.out.println(storeAnswer[j][counter]);
                }
                counter++;
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    catch (FileNotFoundException e) {
        System.out.println("Unable to read file");
    }
}

我添加了counterReaderfileReader;用于计算行数,然后读取实际行。 storeAnswer 2d数组包含您需要的信息。

我希望现在答案更好。