Java程序无法找到文件中的列数。

问题描述 投票:0回答:1

所以,我有一个文件的2D数组,我试图从文件中找到行数和列数。我成功地找到了行数,但对于列数却无法找到。我的数据是由文件中的标签分隔的。

array.txt

4   5   1   9   0
3   4   5   0   5
2   7   7   4   5

public class readFile
    {
    private static Scanner infile;

    public static void main(String[] args){

        //Opening file for reading data
        try
        {
            infile = new Scanner(new 


       File("C:\\Users\\array.txt"));
        }

        catch (FileNotFoundException fnfe)
        {
            System.out.println("Error Creating File");
            System.exit(1);
        }

        //COUNTING THE NUMBER OF ROWS AND COLUMNS IN FILE
        int rows = 0;
        while(infile.hasNextLine())
        {
            rows++;
            infile.nextLine();
        }

        int columns = 0;
        if (infile.hasNextLine())
        {
            columns = infile.nextLine().split("\t").length;
        }


        System.out.println(rows);
        System.out.println(columns);


     }
}
java arrays
1个回答
0
投票

这段代码一直循环到文件结束。

 while(infile.hasNextLine())
 {
     rows++;
     infile.nextLine();
 }

所以你随后调用 if (infile.hasNextLine()) 始终返回false.你应该重新创建你的扫描器并重新开始读取文件,或者从计算第一行的列数开始,然后计算剩余的行数。

你应该重新创建你的扫描器并重新开始读取文件,或者从计算第一行的列开始,然后计算剩余的行。


0
投票

当你运行你的代码时,当前的输出是什么?

        columns = infile.nextLine().split("\t").length;

是0吗,还是4?如果是4,那么你总是要加1,我想,因为每行只有4个制表符......另外,使用空格或制表符作为分隔符会很脆,我建议用逗号代替。

如果输出为0,那可能意味着你的文本文件中的tab字符在代码中没有表示为tab,不等于"\t"

© www.soinside.com 2019 - 2024. All rights reserved.