第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

為什么一個(gè) println 語句會更改代碼的整個(gè)輸出?

為什么一個(gè) println 語句會更改代碼的整個(gè)輸出?

紫衣仙女 2022-09-14 16:11:44
問題我目前正在創(chuàng)建一個(gè)程序來讀取文件并找到幾個(gè)變量。我遇到了這個(gè)問題,其中更改一個(gè)println會更改代碼的整個(gè)輸出。我以前從未遇到過這種情況,不確定這是日食錯誤還是我的錯誤?我的代碼import java.io.File;import java.io.IOException;import java.util.Scanner;public class FileAnalyzer {    public static void main(String args[]) throws IOException {        Scanner input = new Scanner(System.in);        String fileName;        int words = 0, letters = 0, blanks = 0, digits = 0, miscChars = 0, lines = 0;        System.out.print("Please enter the file path of a .txt file: ");        fileName = input.nextLine();        File text = new File(fileName);        //System.out.println(text.exists());        Scanner word = new Scanner(text);        while(word.hasNext()) {            //System.out.println(word.next());            words++;        }        word.close();        Scanner letter = new Scanner(text);        while(letter.hasNext()) {            String currentWord = letter.next().toLowerCase();            for(int i = 0; i < currentWord.length(); i++) {                if(Character.isLetter(currentWord.charAt(i))) {                    letters++;                }            }        }        letter.close();        Scanner blank = new Scanner(text);        while(blank.hasNextLine()) {            String currentWord = blank.nextLine();            for(int j = 0; j < currentWord.length(); j++) {                if (currentWord.charAt(j) == ' ') {                    blanks++;                }            }        }        blank.close();        System.out.println("Words: " + words);        System.out.println("Letters: " + letters);        System.out.println("Blanks: " + blanks);    }}然而只需在第一個(gè)掃描儀實(shí)例中進(jìn)行更改即可更改整個(gè)輸出。如果我把它留在里面,我會得到底部的三個(gè)打印語句和我正在尋找的東西。如果我刪除它,因?yàn)槲也幌朐谖募械拿總€(gè)單詞打印,它在控制臺中顯示為任何內(nèi)容。不確定為什么 while 語句中的一個(gè) print 語句會更改整個(gè)輸出。它首先存在的唯一原因是確保掃描儀以我想要的方式接收輸入。System.out.println(word.next())
查看完整描述

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++;

}


查看完整回答
反對 回復(fù) 2022-09-14
?
慕尼黑8549860

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++;

}


查看完整回答
反對 回復(fù) 2022-09-14
?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗(yàn) 獲得超3個(gè)贊

不知道為什么你想把文本瀏覽三遍。但是,如果您真的必須這樣做,我會先關(guān)閉第一臺掃描儀,然后再打開下一臺掃描儀。


查看完整回答
反對 回復(fù) 2022-09-14
  • 3 回答
  • 0 關(guān)注
  • 277 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號