尝试从文本文件中读取,将其存储到arrayList中并将存储的信息打印到我的屏幕上。为什么我的输出是空的?

时间:2013-03-10 02:58:59

标签: java arraylist

想要打印出存储的信息。我该如何解决这个问题?

public class schoolTimeTable {

    private static ArrayList<String> timesArray = new ArrayList<String>();


    public static void main(String[] args) {

        Scanner scanner = null;

        try {


        File file = new File("C:/Users/Tommy/workspace/Prov/src/TestPaket/text.txt");
        scanner = new Scanner(file);
        while(scanner.hasNextLine()){

            String[] tokens = scanner.nextLine().split("\\s+");

            String[] times = tokens;
            for(String time: times)
            timesArray.add(time);
            System.out.println(timesArray); 



        }} catch (Exception e) {
        // TODO: handle exception
    }

}}

3 个答案:

答案 0 :(得分:4)

如果你更注重代码格式和风格,你会做得更好。这对可读性和理解都很重要。

catch块什么都不做。你永远不应该有一个空的挡块。始终至少打印堆栈跟踪。

对我来说很好:

package cruft;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * SchoolTimeTable
 * @author Michael
 * @link http://stackoverflow.com/questions/15318400/trying-to-read-from-a-text-file-store-it-into-an-an-arraylist-and-print-the-sto/15318413#15318413
 * @since 3/9/13 10:02 PM
 */
public class SchoolTimeTable {

    private static List<String> timesArray = new ArrayList<String>();


    public static void main(String[] args) {
        try {
            File file = new File("resources/timeTable.txt");
            Scanner scanner = new Scanner(file);
            while (scanner.hasNextLine()) {
                String[] times = scanner.nextLine().split("\\s+");
                for (String time : times) {
                    timesArray.add(time);
                }
                System.out.println(timesArray);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我把这个timeTable.txt放在我项目的资源文件中:

1
2 3 4
5 6 7 8

这是我运行时得到的输出:

"C:\Program Files\Java\jdk1.7.0_17\bin\java" cruft.SchoolTimeTable
[1]
[1, 2, 3, 4]
[1, 2, 3, 4, 5, 6, 7, 8]

Process finished with exit code 0

这对我来说是正确的。

答案 1 :(得分:1)

因为没有打印,我的假设是文件名不正确,或者Java不喜欢它。

仔细检查路径,尝试用(双)反斜杠替换正斜杠,如下所示:

C:\\Users\\Tommy\\workspace\\Prov\\src\\TestPaket\\text.txt

当然,正如其他人所说,将catch块更改为:

catch (Exception e) {
    e.printStackTrace();
}

答案 2 :(得分:0)

还是读取文件? 我运行你的代码。是的。 该文件的内容是:

demo1,28,FEB-01,真 demo2,22,DEC-03,假 demo3,21,DEC-03,假 demo4,25,癸03,真

文件名:Visitor.txt 我改变了一些代码:

package test;

import java.io.File;
import java.util.ArrayList;
import java.util.Scanner;

public class schoolTimeTable {
    private static ArrayList<String> timesArray = new ArrayList<String>();
    public static void main(String[] args) {
        Scanner scanner = null;
        try {
            File file = new File("d:/Visitor.txt");
            scanner = new Scanner(file);
            while (scanner.hasNextLine()) {
                String[] tokens = scanner.nextLine().split("\\s+");
                String[] times = tokens;
                for (String time : times)
                    timesArray.add(time);
            }
            System.out.println(timesArray);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

输出: [demo1,28,feb-01,true,demo2,22,dec-03,false,demo3,21,dec-03,false,demo4,25,dec-03,true]。

在我看来,你是文件格式的内容。 您比较文件格式的内容。 希望能够提供帮助