【问题标题】:How do you store each value separately using comma then they store into separate array?如何使用逗号分别存储每个值,然后将它们存储到单独的数组中?
【发布时间】:2013-05-30 07:07:22
【问题描述】:

一个简单的数据文件,其中包含

1908,Souths,Easts,Souths,Cumberland,Y,14,12,4000
1909,Souths,Balmain,Souths,Wests,N

每条线代表一个赛季的英超联赛,格式如下:年份、总理、亚军、次要总理、木勺、总决赛举行、获胜分数、 失分,人群

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

更新: 我刚刚添加了代码,但它仍然没有工作。代码如下:

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

【问题讨论】:

  • 或者也许将每一行存储到数组中,例如 array[0] = {1908,Souths,Easts,Souths,Cumberland,Y,14,12,4000}
  • 我想我有一个可以提供帮助的答案,但我只想澄清你想要做什么。您想从文件中取出每一行,并从该行中取出每一部分数据并将它们放入单独的数组中?所以,你想要一系列的年份、一系列的总理、一系列或亚军等?每行是否会有相同的 9 位数据?
  • 这是澳大利亚足球(又名橄榄球),对吧?祝你好运。
  • 是的,你是对的,本。我需要知道该怎么做。
  • 哈哈是的,这是澳大利亚足球,Vikingsteve。我是公鸡的忠实粉丝:P

标签: java arrays delimiter filereader


【解决方案1】:

给你。使用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

【讨论】:

  • 这段代码运行良好,但我们没有被教导使用链表,所以我们必须使用常规数组。
  • 具体数据如何选择?例如,我想显示举行总决赛的首映式列表,在行中显示 Y 或 N。
  • 也就是说,我想显示第5个逗号之后的所有数据列表?
  • 好吧,如果你想使用数组,那么循环文本行并计算行数然后创建数组。
  • 要检查 YN,请执行以下操作:line.split(",")[5].compareToIgnoreCase("Y")line.split(",")[5].compareToIgnoreCase("N")
【解决方案2】:

经过一番努力,我想出了以下代码:

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 数组包含您需要的信息。

我希望现在的答案会更好。

【讨论】:

  • @Shuvo0o: (YourLine) 只是一个占位符。我打算向你展示你的线路应该在的地方。我会清理它并发布答案。干杯!
  • 谢谢,但这有点搞砸了,或者我对你的代码感到困惑。我将发布没有链接列表的更新代码,但是当我运行程序时它显示“Y Y Y Y Y Y ...”这不是我所期望的。我期望的是显示一个完整的列表,其中“Y”是对总决赛举行的肯定。
  • @Shuvo0o:我的答案读取文件中的所有行,并将用逗号分隔的每个参数放入其单独的数组中,例如所有年份都将在storeAnswer[0][] 中提供,所有总理都将在storeAnswer[1][] 中提供,依此类推(就像 Ben Green 解释的那样,你同意了)。如果您要处理任何具体细节,只说举行的总决赛、获胜分数、失败分数、人群,然后阅读storeAnswer[][] 并提取您需要的内容。
猜你喜欢
  • 2011-05-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-05
  • 1970-01-01
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多