Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 读取文本文件时,ArrayList不会在for循环中填充_Java_Arraylist_Bufferedreader - Fatal编程技术网

Java 读取文本文件时,ArrayList不会在for循环中填充

Java 读取文本文件时,ArrayList不会在for循环中填充,java,arraylist,bufferedreader,Java,Arraylist,Bufferedreader,我正试图编写一个程序,看看哪些数字显示了百万富翁中每一个球的最佳结果(只是为了好玩,我明白这无助于你预测未来) 问题是: ArrayList不会从BufferedReader的输入中填充,但我可以将任何内容打印到控制台,只是不能将其添加到数组或ArrayList中 我很抱歉,这是多么草率和所有奇怪的命名: public static void main(String[] args) { MathStats mathStats = new MathStats(); getF

我正试图编写一个程序,看看哪些数字显示了百万富翁中每一个球的最佳结果(只是为了好玩,我明白这无助于你预测未来)

问题是:

ArrayList不会从BufferedReader的输入中填充,但我可以将任何内容打印到控制台,只是不能将其添加到数组或ArrayList中

我很抱歉,这是多么草率和所有奇怪的命名:

    public static void main(String[] args) {
    MathStats mathStats = new MathStats();
    getFileInfo(); //Same class as main.
    System.out.println();
    System.out.println(mathStats.num1.size());
    //num1 should be populated after calling getFileInfo();

} //End of main


    private static void getFileInfo() {
    File listOfTickets = new File(**FILE**);
    MathStats mathStats = new MathStats();

    try {
        BufferedReader getInfo = new BufferedReader(new FileReader(
                listOfTickets));

        String ticketInfo = getInfo.readLine();

        for (int i = 0; ticketInfo != null; i++) {

            ticketInfo.split("\n");

            System.out.println(ticketInfo);

            int a = Integer.parseInt(ticketInfo.substring(25,
                    27));
            int b = Integer.parseInt(ticketInfo.substring(28,
                    30));
            int c = Integer.parseInt(ticketInfo.substring(31,
                    33));
            int d = Integer.parseInt(ticketInfo.substring(34,
                    36));
            int e = Integer.parseInt(ticketInfo.substring(37,
                    39));
            int f = Integer.parseInt(ticketInfo.substring(40,
                    42));

            mathStats.setArrayValues(a, b, c, d, e, f);
            mathStats.setCount(i);

            ticketInfo = getInfo.readLine();
        }

        getInfo.close();

    } catch (FileNotFoundException e) {
        System.out.println("Can't find file");
        System.exit(0);

    } catch (IOException e) {
        System.out.println("An I/O Error Occured");
        System.exit(0);

    }


}
方法setArrayValues只是将各个int添加到其ArrayList或至少其假定值。它使用普通列表。添加(a);添加每个int

问题是,在测试main中每个ArrayList的大小时(调用此方法后),它每次都返回0

如果您想测试文本文件,可以将一些数据放入其中(删除中间的多余行)

2014年4月11日百万富翁09-15-24-39-41[01],Megaplier®:X4

2014年10月31日百万富翁11-29-36-58-67[15],Megaplier®:X2

2014年10月28日百万富翁03-50-57-58-60[11],Megaplier®:X5

2014年10月24日百万富翁02-14-21-28-55[03],Megaplier®:X3

2014年10月21日百万富翁05-35-37-41-66[11],Megaplier®:X5

2014年10月17日百万富翁21-31-43-56-60[12],Megaplier®:X4

下面是SetArrayValue


正如Guido所说,您正在getFileInfo方法中实例化一个新的MathStats,因此不会填充在main中安装的MathStats。您可以通过将main中创建的引用传递给getFileInfo方法来解决此问题:

public static void main(String[] args) {
    MathStats mathStats = new MathStats();
    getFileInfo(mathStats); //Same class as main.
    System.out.println();
    System.out.println(mathStats.num1.size());
    //num1 should be populated after calling getFileInfo();

} //End of main


private static void getFileInfo(MathStats mathStats) {
    File listOfTickets = new File(**FILE**);
    try {
      //..

您能显示
setArrayValue
的代码吗?您的catch块没有做任何异常操作。至少尝试添加一个打印堆栈跟踪。@NikhilTalreja我不明白为什么。。。“找不到文件”是很自然的,我们通常不需要查看它发生在哪一行。问题可能在
MathStats
类中,但您对我们隐藏了它。找不到文件是,但如果您获取我提供的数据,把它扔到一个文本文件中,使用我放置文件的文本文件路径,然后它就可以读取文件了。非常感谢!这就解决了!
public static void main(String[] args) {
    MathStats mathStats = new MathStats();
    getFileInfo(mathStats); //Same class as main.
    System.out.println();
    System.out.println(mathStats.num1.size());
    //num1 should be populated after calling getFileInfo();

} //End of main


private static void getFileInfo(MathStats mathStats) {
    File listOfTickets = new File(**FILE**);
    try {
      //..