while loop java 問題

2014-01-14 11:46 pm
import java.util.Scanner;

public class Exam {

public static void main(String[] args) {
Scanner input = new Scanner(System.in);
double[] x = new double[2];
int n = 0;
do {
System.out.print("Enter a number (-ve to finish): ");
x[n] = input.nextDouble();
if (x[n] >= 0) {
n++;
}
System.out.println("n=" + n);
} while ((n < 2) && (x[n] <= 0));

}
}
我想問e條code 點解我 入1 佢仲會繼續run 而唔會直接出output??
我while 條件 ((n < 2) && (x[n] <= 0)); 我入1 唔係應該即出??

回答 (3)

2014-01-15 12:23 am
✔ 最佳答案
請細看呢句『while ((n < 2) && (x[n] <= 0));』
你個WHILE LOOP根本無野做。
WHILE同IF的STATEMENT結構一樣,即係 IF (檢查) { TRUE時執行指令},WHILE也相同,即係 WHILE (檢查) { TRUE時執行指令},不過會重複直至檢測到FALSE為止。
你句WHILE之後得一個分號,即係乜都冇。
2014-01-15 5:01 am
.
.
do {
System.out.print("Enter a number (-ve to finish): "); // <---這裡是說以負數離開
x[n] = input.nextDouble();
if (x[n] >= 0) {
n++;
}
System.out.println("n=" + n);
} while ((n < 2) && (x[n] <= 0));


如果要以正數離開應改成
} while ((n < 2) && (x[n-1] <= 0));
因為輸入正數會令n增加1


但即使這樣修正後仍有可能會出現一個超出範圍的錯誤,
最好把n的初值定為1並預設x[0]的值等於零。其他問題要正式測試才知^_^
2014-01-15 2:01 am

"Lee", 我估妳攪錯了。while之前有個do所以個loop係會執行的。
int n = 0;
do {
...
x[0] = input.nextDouble();
// x[0] = 1
if (x[0] >= 0) {
n++;
// n = 0 + 1 = 1
}
System.out.println("n=" + n);
// output: n=1
} while ((n < 2) && (x[1] <= 0))
這時n仲係細過2,x[1]又係0所以會繼續行多一次。


收錄日期: 2021-04-13 19:54:55
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20140114000051KK00101

檢視 Wayback Machine 備份