【发布时间】:2017-01-15 01:04:05
【问题描述】:
我正在为我的模拟器飞行编写一个主程序。我在 .txt 文件中获得简报,并尝试使用扫描仪读取该文件。 .txt 文件包含一个度数符号,这会导致扫描仪无法读取整个文件。
public static String[] ConvertFile(String FileName){
ArrayList<String> FileArray = new ArrayList<String>();
int count = 0;
try{
Scanner file = new Scanner( new File ("C:\ <File Location>" + FileName));
while(file.hasNextLine()){
count++;
String Line = file.nextLine());
System.out.printf("%3d: %s %n", count, Line );
System.out.println(count);
}
}
catch(FileNotFoundException fnfe){
System.out.println("File Not Found.");
}
return null;
}
我已经把这条线放在下面的问题中(第 23 行)
COND: 140475 LB // RWY DRY // +14°C Q1021 270/09 // LMT: OBS(B)
请注意,当有 726 行时,输出会给出 txt 文件的前 16 行。我知道它的度数符号,因为当我编辑 txt 并删除度数符号时,程序会输出所有行。
【问题讨论】:
-
所以它因为度数符号而崩溃?
-
当你到达符号时会发生什么?它会崩溃吗,
file.hasNextLine()是否开始返回false?在此之前是否还有其他度数符号被读取,或者这是第一个? -
它不会崩溃,它会打印 txt 文件的前 16 行,但有 726 行。抱歉,我并不清楚。我知道这是问题所在,因为当我编辑 txt 文件并删除符号时,扫描仪能够打印所有行。
-
文件对这个非 ASCII 字符(以及任何其他字符)使用什么 'charset'(编码)?那是你的 JVM 的默认字符集,
Scanner的 1-arg ctor 使用它吗?如果不是,请使用 2-arg ctor 指定正确的字符集。 -
我要尝试的第一件事是删除它卡住的第 16 行,看看它是否会更进一步,或者 16 是否是它会做的最大值。