4 回答

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
您聲明時(shí)yn沒有初始值,然后立即將其用作循環(huán)條件。
char yn;
while(yn == 'Y' && yn == 'y'){
意味著您期望默認(rèn)值y(或Y)。您必須顯式設(shè)置它才能使其成為true。另外,沒有一個(gè)字符是兩者兼而有之'Y','y'所以你需要一個(gè)邏輯或。喜歡,
char yn = 'Y';
while(yn == 'Y' || yn == 'y') {
您也可以考慮
char yn = 'Y';
while (Character.toUpperCase(yn) == 'Y') {
然后你就不需要一個(gè)||. 你在這里也有同樣的邏輯不可能性
if(yn == 'N' && yn == 'n'){
System.out.println("Done!");
break;
}
else if(yn == 'Y' && yn == 'y'){
System.out.println("Done!");
continue;
}
||并可以用(或用)修復(fù)它Character.toUpperCase(char)。

TA貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
char yn;
這是聲明變量的地方。
while(yn == 'Y' && yn == 'y'){
這是您使用變量的地方。這兩行之間沒有 yn 初始化 - 這就是它未初始化時(shí)使用的原因。

TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
在Java中,每當(dāng)你聲明一個(gè)變量但不初始化它(就像你的情況一樣char yn;
),編譯器會(huì)進(jìn)一步檢查它的初始化部分。
如果您稍后在任何具有條件的范圍內(nèi)初始化它(例如您的情況while (yn == 'Y' && yn == 'y'){..}
),那么編譯器將無(wú)法在編譯時(shí)決定范圍或塊內(nèi)的代碼是否將被執(zhí)行。
因此,盡管您已在塊內(nèi)進(jìn)行了初始化,但編譯器無(wú)法保證。
因此編譯器會(huì)拋出一個(gè)錯(cuò)誤,指出變量未初始化。

TA貢獻(xiàn)1951條經(jīng)驗(yàn) 獲得超3個(gè)贊
將“Yn”視為一個(gè)容器,如果您想測(cè)試該容器內(nèi)的內(nèi)容,則需要在容器中放置一些東西,或者在本例中
char yn;
應(yīng)該成為
char yn = 'Y';
您使用while 循環(huán)和if語(yǔ)句進(jìn)行測(cè)試
char yn; //You are DECLARING a variable char yn = 'Y' //You are Initialising a variable
就你而言,你可以說(shuō)
char yn = ' ';
因?yàn)槲蚁嘈胚@就是你試圖做的
我還注意到您正在嘗試測(cè)試yn變量是否同時(shí)為大寫和小寫,您可以通過(guò)將 && (AND) 更改為 || 來(lái)解決此問題 (或者)
添加回答
舉報(bào)