我有以下信息的.dat文件:爲什麼不讀while語句?
Erik 3 Rita 7 Tanner 14 Jillyn 13 Curtis 4 Stephanie 12 Ben 6
它讀取男孩的名字,男孩的年齡,女孩的名字,女孩的年齡等
我都數不過來的男孩,總的總數女孩數量,然後加上男孩的年齡和女孩的年齡,然後找出它們之間的差異(絕對)。
我創建了下面的代碼來做到這一點:
public class Exercise1 {
public static void main(String[] args)
throws FileNotFoundException {
Scanner input = new Scanner(new File(
"C:/FilesForJava/ChapterSixExerciseOne.dat"));
boyGirl(input);
}
public static void boyGirl(Scanner fileInput) {
int boysCount = 0, girlsCount = 0, counter = 1,
boysSum = 0, girlsSum = 0;
while(fileInput.hasNext()){
if(counter % 2 != 0) {
boysCount++;
}
else {
girlsCount++;
}
while(fileInput.hasNextInt()) {
if(counter % 2 != 0) {
boysSum += fileInput.nextInt();
}
else {
girlsSum += fileInput.nextInt();;
}
}
counter++;
}
System.out.println(boysCount + "Boys, " + girlsCount + "Girls");
System.out.println("Difference between boys' and girls' sums: " + Math.abs(boysSum - girlsSum));
}
的問題是,該方案不會進入嵌套while語句,我想不出什麼我做錯了。它不僅總是繞過它,第一個語句永遠不會結束,所以它永遠循環。本書在他們的例子中使用了.dat文件。我用記事本創建文件並將其保存爲.dat文件。這可能是我的問題嗎?
請指教。
掃描器從不讀取下一行。 – blagae 2014-09-26 18:31:23
while(fileInput.hasNext()只是確認流中有一個標記,你需要實際讀取它才能前進 – jpw 2014-09-26 18:31:53