3 回答

TA貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
不確定為什么 while 語句中的一個(gè)打印語句會更改整個(gè)輸出
因?yàn)楫?dāng)該語句存在時(shí),您正在使用掃描程序中的令牌。當(dāng)它被注釋掉時(shí),你不是。消耗令牌的不是打印,而是對 的調(diào)用。next()
將其注釋掉后,您的循環(huán)為:
while (word.hasNext()) {
words++;
}
hasNext()不會修改掃描儀的狀態(tài),因此,如果它進(jìn)入循環(huán)體,它將永遠(yuǎn)循環(huán)。
如果要有一行,可以注釋掉或不注釋掉,請將代碼更改為:
while (word.hasNext()) {
String next = word.next(); // Consume the word
System.out.println(next); // Comment this out if you want to
words++;
}

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊
通過使用,由于該方法,您將在集合中的元素之間循環(huán)。因此,直接調(diào)用將允許您在迭代中移動。System.out.println(word.next());next()next()
當(dāng)注釋掉時(shí),將導(dǎo)致你永遠(yuǎn)循環(huán)(如果有一個(gè)單詞),因?yàn)槟銓o法移動到下一個(gè)令牌。//System.out.println(word.next());word.hasNext()
以下代碼段將幫助您實(shí)現(xiàn)所需的結(jié)果
while(word.hasNext()){
word.next();
words++;
}

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊
不知道為什么你想把文本瀏覽三遍。但是,如果您真的必須這樣做,我會先關(guān)閉第一臺掃描儀,然后再打開下一臺掃描儀。
添加回答
舉報(bào)