我在這個格式的文件:跳過空白行,同時通過文件掃描
Gray M 0 0 869 0 0 0 0 0 0 0 0 0 0 0 Mart M 722 957 0 0 0 0 0 0 0 0 0 0 0 0 Adolfo M 0 995 0 859 0 646 742 739 708 731 671 649 546 0 Livia F 0 0 0 0 0 0 0 0 0 0 0 0 0 826 Mearl M 0 0 947 0 0 0 0 0 0 0 0 0 0 0 Estel M 0 0 0 793 750 826 0 0 0 0 0 0 0 0 Lee F 300 333 278 256 281 310 283 268 218 298 364 955 0 0 Garnet F 0 704 663 464 421 665 721 0 0 0 0 0 0 0 Stephan M 0 0 0 922 0 0 757 333 387 395 487 406 721 0 (Last line in the file is a blank Line)
我的方法接受一個字符串,如:「李F」,並把它比作一條線的前兩個令牌在文件中。如果它匹配行上的前兩個標記,則它返回兩個標記,如果它與文件中的任何內容不匹配,則告知用戶它沒有找到標記。我的程序運行良好,如果該名稱的文件,但如果名稱不是在文件中得到一個錯誤:
Exception in thread "main" java.util.NoSuchElementException at java.util.Scanner.throwFor(Unknown Source) at java.util.Scanner.next(Unknown Source) at Names.findName(Names.java:36) at Names.main(Names.java:9)
這是發生,因爲我的if語句檢查一個空行似乎沒有不正在處理文件中最後一個空白行,我的代碼試圖從最後一行取兩個令牌....爲什麼它不跳過文件中最後一個空白行?
public static String findName(String nameGend) throws FileNotFoundException {
Scanner input = new Scanner(new File("names.txt"));
while (input.hasNextLine()) {
String line = input.nextLine();
if (!(line.isEmpty())) {
String name= input.next();
String gend= input.next();
String nameGend2= name+ " " + gend;
if (nameGend.equalsIgnoreCase(nameGend2)) {
input.close();
return nameGend2;
}
}
}
input.close();
return "name/gender combination not found";
}
你真的試過調試嗎? – Prince