0

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

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
    }

}}
4

3 回答 3

4

如果您更加关注代码格式和样式,您会做得更好。它对可读性和理解性都非常重要。

catch 块什么也不做。你永远不应该有一个空的 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

这对我来说是正确的。

于 2013-03-10T03:01:10.313 回答
1

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

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

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

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

catch (Exception e) {
    e.printStackTrace();
}
于 2013-03-10T03:08:26.237 回答
0

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

demo1,28,feb-01,true demo2,22,dec-03,false demo3,21,dec-03,false demo4,25,dec-03,true

文件名:Visitor.txt 我改了一点代码:</p>

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]。

在我看来你的文件格式的内容。您比较文件格式的内容。希望能帮上忙

于 2013-03-10T03:24:11.187 回答