4 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個(gè)贊
嘗試以可讀的方式提供您的代碼,以便我們能夠給出有效的答案(英文)。當(dāng)您的輸入為 0 時(shí),您的循環(huán)應(yīng)該結(jié)束,但現(xiàn)在您的代碼要求您輸入數(shù)字,直到您輸入除 0 之外的任何內(nèi)容。
要更正代碼,請將 while 表達(dá)式更改為 != 0。此外,您還需要在循環(huán)內(nèi)(而不是循環(huán)外)詢問用戶一個(gè)新數(shù)字。
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner invoer = new Scanner(System.in);
final int STOP_TEKEN = 0;
int nummer = 0;
do {
System.out.print("Geef een getal: ");
nummer = invoer.nextInt();
}
while (nummer != STOP_TEKEN);
}
}

TA貢獻(xiàn)1817條經(jīng)驗(yàn) 獲得超14個(gè)贊
認(rèn)真學(xué)習(xí)?。?!對于您的情況,可能會出現(xiàn)兩種情況。
首先,如果您的輸入不是0,則System.out.print()只會運(yùn)行一次。因?yàn)?,?shí)際上do-while,里面的語句do將運(yùn)行一次,之后條件將不匹配,因?yàn)閿?shù)字不等于0,并且循環(huán)將中斷。
其次,如果你的輸入是0,則會導(dǎo)致無限循環(huán),因?yàn)?while 內(nèi)部的條件始終滿足。
解決方案:
您需要在每次迭代中減小 的值nummer。另外,將您的條件更改為而!=不是==。嘗試這樣:
public static void main(String[] args) {
Scanner invoer = new Scanner(System.in);
final int STOP_TEKEN = 0;
int nummer = invoer.nextInt();
do {
System.out.print("Geef een getal: ");
nummer--;
}
while (nummer != STOP_TEKEN);
}

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
嘗試在循環(huán)內(nèi)的 print 語句之后為 nummer 變量分配值。像這樣:
int nummer;
do {
System.out.print("Geef een getal: ");
nummer = invoer.nextInt();
}while (nummer == STOP_TEKEN);

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超4個(gè)贊
public class WhileLoopNumbers {
public static void main(String[] args) {
Scanner invoer = new Scanner(System.in);
final int STOP_TEKEN = 0;
int nummer = invoer.nextInt();
do {
System.out.print("Geef een getal: ");
// Assign stdin value to some variable
nummer = invoer.nextInt();
} while (nummer != STOP_TEKEN);// check the stdin value with your exit condition
}
}
添加回答
舉報(bào)