2
10
aaa aaa aaa
bbb bbb bbb
ccc ccc ccc
ddd ddd ddd

我有一个文本文件,我试图用制表符分隔符读取。每当我读取文件时,我在 10 之后得到一个 arrayindexoutofbound 错误。我在网上搜索,发现我必须在 \t 后面添加一个 -1,但我仍然得到同样的错误。

 try{
        Scanner scan = new Scanner(new File("1.txt"));
        String line="";
        int readline = Integer.parseInt(scan.nextLine());//

        while (scan.hasNextLine())
        {
            line = scan.nextLine();

            if(line.equals("ccc"))
            {  
                break;
            }
        String[] split=line.split("\t");

            array.add(split);
        } 
4

2 回答 2

12

如果你在Scanner这里使用不需要split,你可以next()在这里使用如下

    Scanner sc=new Scanner(new FileReader("D:\\test.txt"));
    while (sc.hasNextLine()){
        System.out.println(sc.next());
    }
于 2013-08-20T09:43:48.217 回答
0

这样你的代码就会失去这个丑陋的中断(中断大部分时间是可以避免的......)

  try{
    Scanner scan = new Scanner(new File("1.txt"));
    String line="";
    int readline = Integer.parseInt(scan.nextLine());//

    while (scan.hasNextLine())
    {
        line = scan.nextLine();

        if(!line.equals("aaa")){
           String[] split=line.split("\t");
           array.add(split);
        }
    }  

关于您的问题,我认为您正在使用第一行的整数初始化数组,但它是 10 并且您有 12 个元素。因此索引超出范围,但您的问题仍不清楚......

于 2013-08-20T09:42:21.777 回答