2013-11-04 78 views
1
Scanner kb=new Scanner(System.in); 
    int n=kb.nextInt(); 
    do{ 
     System.out.println("How many numbers do you wish to store?"); 

    }while (n<1); 

所以我的問題是,我不知道如何退出這樣的循環,並想知道如何可以這樣做。我試圖讓用戶不得不爲數組大小輸入一個數字,直到他們輸入大於0的值。顯然,這只是代碼的一小部分,但我真的想知道答案的原因這個。循環是我從未擅長的事情,顯然這很重要。我所看到的只是通用的語法答案,但是如果我們必須用英語說這些,我們該說些什麼?謝謝,並一切順利。你如何理解循環?

回答

1

正如您所描述的,當用戶輸入一個大於零的值時,循環會退出。目前,它等待用戶輸入的代碼部分是外循環,所以你需要將它在移動,就像這樣:

int n = 0; // initialize our loop control variable 
do{ 
    System.out.println("How many numbers do you wish to store?"); 
    n=kb.nextInt(); 
}while (n<1); 

要獲得關於「爲什麼」的問題,我不知道我完全理解你在尋找什麼樣的解釋,但基本上,這段代碼是這樣用純英語說的:

詢問用戶他們要存儲多少個號碼。

如果用戶輸入一個數小於零,再次問他們,並繼續要求他們同樣的問題,直到他們給的數量大於零

這就是它。如果我誤解了你的問題,請告訴我。

+1

這太令人難以置信了,我一直很害羞張貼論壇尋求幫助,但是你們幾分鐘之內爲我做了我半個學期以來一直在尋找的東西。這是一個直截了當的答案。至少從我的經驗開始,最難的部分就是搞清楚你告訴程序要做什麼。因此,像這樣翻譯是很了不起的。非常感謝。 –

+0

對不起,但由於某種原因,eclipse給了我一個錯誤,說當我把它放在上面時,n不能被解析成一個變量。當我嘗試在循環之外初始化它時,它會突出顯示我的掃描器並說有一個重複的局部變量。 –

+0

@NicholasBrandon哎呀是的,我忘了這一點。 'int n'部分在塊內部被聲明(用花括號表示),並且只存在於那個'while'條件看不到的範圍內。基本上,'int n'應該在循環之前聲明。在循環內部,除去'int'部分,所以你只需要'n = kb.nextInt()'。我會更新答案。 –

0

你說的是英文,它現在正在說的是: 做,循環內部的東西(也就是'{'和'}'之間的東西),而n小於1 「while」之後的邏輯說明何時停止。現在,循環中的內容實際上並沒有改變n,所以你要麼運行一次並退出(如果kb.nextInt()小於1),要麼永遠運行(如果不是)。您必須在循環中修改n。

+0

非常感謝你,這很有道理。 –