4 回答

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

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

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

TA貢獻1951條經驗 獲得超3個贊
將“Yn”視為一個容器,如果您想測試該容器內的內容,則需要在容器中放置一些東西,或者在本例中
char yn;
應該成為
char yn = 'Y';
您使用while 循環和if語句進行測試
char yn; //You are DECLARING a variable char yn = 'Y' //You are Initialising a variable
就你而言,你可以說
char yn = ' ';
因為我相信這就是你試圖做的
我還注意到您正在嘗試測試yn變量是否同時為大寫和小寫,您可以通過將 && (AND) 更改為 || 來解決此問題 (或者)
添加回答
舉報