2014-01-06 61 views
0

執行一些考試修訂。一個問題是,修改代碼以便循環至少執行一次。修改while循環執行至少一次

我的代碼:

int x = 0; 
while (x < 10) { 
    if (x % 2 != 0) { 
     System.out.println(x); 
    } 
    x++; 
} 

現在我知道,同時將循環當條件爲真,我知道我不能刪除X ++,因爲這會給我無窮的零。我想我會刪除if語句和與之相關的大括號。

你會同意嗎?

int x = 0; 
while (x < 10) { 
    System.out.println(x); 
    x++; 
} 
+2

看看'do-while'循環。 –

+0

你已經改變了輸出 - 你確定允許嗎? – tabstop

+0

'if'語句只打印奇數,所以刪除它會改變所需的輸出。 – egl

回答

0

我不會同意,這將改變循環的根本目的(發射每隔數到stdout)。

研究轉換爲do/while循環。

-1
int x = 0; 
     while (x <10){ 
     System.out.println(x); 
      x++; 
     } 

將工作

編輯:我覺得別人的意見是權利也是如此,DO/while循環將迫使代碼的一個執行

0

雖然你的解決方案在技術上回答了這個問題,我不要以爲這是他們在尋找的東西(這不是你的錯,在我看來這是一個措辭嚴厲的問題)。鑑於這是一個考試問題,我認爲他們在這之後是一個do while循環。

它的作用與while循環相同,只是在循環結束時檢查了while條件 - 這意味着它將始終至少執行一次。


實施例:

while(condition){ 
    foo(); 
} 

這裏,condition首先檢查,然後,如果conditiontrue,執行循環,並且foo()被調用。

鑑於此:

do{ 
    foo(); 
}while(condition) 

的循環一旦被執行,foo()叫,然後condition進行檢查,以瞭解是否再次執行循環。


更多:

如需進一步閱讀,你可能想看看thisthis教程whiledo whilefor循環。

2

雖然這個特定的循環實際上至少執行了一次,但它不是while循環的屬性。

如果while循環中的條件未滿足,則循環從不執行。

甲do-while循環的工作幾乎相同的方式,除了該條件執行循環後,評價,因此,循環總是至少執行一次:

void Foo(bool someCondition) 
{ 
    while (someCondition) 
    { 
     // code here is never executed if someCondition is FALSE 
    } 
} 

在另一方面:

void Foo(bool someCondition) 
{ 
    do 
    { 
     // code here is executed whatever the value of someCondition 
    } 
    while (someCondition) // but the loop is only executed *again* if someCondition is TRUE 
} 
-1
var x = 0; 
do { 
    if (x % 2 != 0) System.out.println(x); 
    x++; 
} while (x < 10); 
+0

那麼如果你真的注意到它破壞了程序,那麼爲什麼你會在循環外部使用該功能呢? – oerkelens

+0

確實,添加了print語句以通過循環執行。儘管如此,Jayseppi並沒有給出他期望的程序,他認爲消除循環的預期功能可以解決他的問題。 – egl