2016-01-10 46 views
-1

該程序應打印出3,6和9,然後停止並顯示「達到程序結束」,但繼續打印3,6,9和12.如何解決?示例代碼如下:當產品= 9時,程序爲什麼不停止?

int x = 1; 
int mul = 3; 
int product = 0; 
while (product < 10) { 
    product = mul * x; 
    System.out.println(product); 
    x++; 
} 
System.out.println("End Of Program Reached"); 
+1

所以,當'產品'是'9'你不想再次迭代,對吧?現在看看你的循環條件。 – Pshemo

+0

你的代碼中有一個基本的邏輯錯誤。做一個幹運行,我想你會弄清楚爲什麼會發生。如找出錯誤是編程的墊腳石。 –

回答

5

您打印的product值不是您在while循環中測試的值。第一個while支票是針對產品= 0.

交換System.out.println(product);product = mul * x;陳述,您可能會理解。

+1

使用IDE中的調試程序逐步執行程序(如果使用的話)通常對理解正在發生的事情很有幫助,並且是開發更高級代碼時的一項有用技能。特別是,每次評估「時間」條件時都要注意產品的價值,這會告訴你爲什麼丹的答案是正確的。 – aTotalStranger

-1

的問題是,如果是低於10的產品,才檢查,產品已達到12如後當x = 3 =產品9,所以它再次運行你的循環後,通過改變您的while循環

int x = 1 ; 
int mul = 3; 
int product = 0; 
while (product < 9) { 
    product = mul * x; 
    System.out.println(product); 
    x++; 
} 
System.out.println("End Of Program Reached"); 

while (product < 9) 

produc:下一迭代X = 4和產物= 12,這是您的while循環看到當時產物> 10 嘗試此t達到9,然後打破循環。

0
int x = 1; 
int mul = 3; 
int product = 0; 
while (product < 10) { 
product = mul * x; 
System.out.println(product); 
x++; 
} 
System.out.println("End Of Program Reached"); 

如果您嘗試運行此:

在第一次迭代

X = 1; MUL = 3;產品= 0;

產品< 10即0 < 10因此進入循環。

Now product = x * mul;即產品= 3 x ++;

在第二次迭代

因爲3 < 10再次進入循環。

x = 2; MUL = 3;產品= 3;

現在產品= x * mul = 3 * 2 = 6 和x ++;

在第三循環

X = 3; MUL = 3; product = 6

Now product = 3 * 3 = 9 x ++;

在第四次迭代

自9 < 10再次進入循環

X = 4; MUL = 3; product = 9

Now product = 3 * 4 = 12 x ++;

第五迭代:

X = 5; MUL = 3;產品= 12

現在產品> 10因此不進入循環。

因此,打印3 6 9 12

相關問題