所以,我有一个文件的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);
}
}
这段代码一直循环到文件结束。
while(infile.hasNextLine())
{
rows++;
infile.nextLine();
}
所以你随后调用 if (infile.hasNextLine())
始终返回false.你应该重新创建你的扫描器并重新开始读取文件,或者从计算第一行的列数开始,然后计算剩余的行数。
你应该重新创建你的扫描器并重新开始读取文件,或者从计算第一行的列开始,然后计算剩余的行。
当你运行你的代码时,当前的输出是什么?
columns = infile.nextLine().split("\t").length;
是0吗,还是4?如果是4,那么你总是要加1,我想,因为每行只有4个制表符......另外,使用空格或制表符作为分隔符会很脆,我建议用逗号代替。
如果输出为0,那可能意味着你的文本文件中的tab字符在代码中没有表示为tab,不等于"\t"