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

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

For 循環(huán)導(dǎo)致 Scanner 讀取另一行

For 循環(huán)導(dǎo)致 Scanner 讀取另一行

慕斯709654 2023-05-10 17:06:37
我正在嘗試做 CCC 2019 的 J3 問題,我的代碼大部分都有效,除了我的 for 循環(huán)導(dǎo)致 Scanner 在讀取最后一行之前讀取額外的一行。您可以在這里找到確切的問題:https ://dmoj.ca/problem/ccc19j3預(yù)期輸入:4+++===!!!!777777......TTTTTTTTTTTT(AABBC)3.1415555預(yù)期輸出:3 + 3 = 4 !6 7 6 . 12 T1 ( 2 A 2 B 1 C 1 )1 3 1 . 1 1 1 4 1 1 4 5我的輸出:3 + 3 = 4 ! 6 7 6 . 12 T 1 ( 2 A 2 B 1 C 1 ) "Scanner waits for another line here""If I press enter, it then spits out the last line."1 3 1 . 1 1 1 4 1 1 4 5我似乎找不到問題,我嘗試將 for 循環(huán)變成一個方法,然后為每個輸入接受 Scanner 的四個不同輸入(str0、str1 等),它仍然讀取另一行。我在 sc.nextInt() 之后添加了 sc.nextLine() 以確保 Scanner 讀取輸入的下一行和 int 旁邊的空格。我嘗試省略最后一行輸入,但它只是在最后一行之前讀取另一行。所以這個問題似乎只限于最后一行而不是特定的輸入。 public static void main(String[] args) {        Scanner sc = new Scanner(System.in);        int counter = 1;        int n = sc.nextInt();        sc.nextLine();        for (int i = 0; i < n; i++){            String str = sc.nextLine();            for (int j = 0; j < str.length(); j++){                if (j != str.length() - 1 && str.charAt(j) == str.charAt(j+1)){                    counter++;                }else{                    System.out.print(counter + " " + str.charAt(j) + " ");                    counter = 1;                }            }            System.out.println();        }    }
查看完整描述

1 回答

?
ITMISS

TA貢獻(xiàn)1871條經(jīng)驗(yàn) 獲得超8個贊

聽起來您遇到了行尾問題。

Scanner.nextLine()將從輸入中讀取一行加上行分隔符,然后丟棄行分隔符,然后返回它讀取的行的實(shí)際內(nèi)容。

行分隔符可以是一個 LF 字符 (?'\n') 或一個 CR 字符 (?'\r'),或者一個 CR 字符后跟一個 LF 字符,或者是幾種很少使用的單字符 Unicode 行結(jié)尾之一。這種分隔符的多樣性反映了各種操作系統(tǒng)如何表示文本文件的歷史變化。嘗試Scanner通過接受所有可能性來提供幫助,無論它恰好在哪個平臺上運(yùn)行。

如果我們假設(shè)當(dāng)您粘貼測試數(shù)據(jù)時,您觀察到的行為會以某種方式在您粘貼的程序和您要粘貼到的控制臺之間的交互導(dǎo)致您的程序被賦予以單個 CR 結(jié)尾的行.?然后Scanner.nextLine()需要查看它給出的下一個字符是否是 LF——因?yàn)槿绻?,那么它也?yīng)該吃掉它,作為行尾的一部分。因此它只會在看到另一個角色后才會返回。

另一方面,當(dāng)您手動輸入時,您的回車鍵可能會產(chǎn)生 LF 或 CR-LF 組合。nextLine()一旦看到行結(jié)束,它們中的任何一個都會很高興。

如果你一行一行地粘貼這些行,你應(yīng)該能夠檢驗(yàn)這個假設(shè)。然后您可能會看到第一行的翻譯僅在您粘貼第二行之后出現(xiàn),依此類推。

您可能不需要為了自動判斷編程挑戰(zhàn)而擔(dān)心這一點(diǎn)。判斷系統(tǒng)不會將測試輸入粘貼到您的程序中,但可能會將其通過管道傳輸,這意味著您的程序可以在預(yù)期生成之前看到所有輸入,直到最后的文件結(jié)束指示輸入。在那種環(huán)境下它應(yīng)該可以正常工作。


查看完整回答
反對 回復(fù) 2023-05-10
  • 1 回答
  • 0 關(guān)注
  • 146 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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