剛學Java第3天,碰到書上練習題 「找2~100中所有的質數」。
以下是我寫的Code:
int a=0;
while(a<=100)
a+=1;
for (int i=1; i<=a; i++) { //以下為質數判定
if ((a%i)==0) {
Prime+= i;
if (Prime==a+1){
System.out.print(Prime-1);
}
}
}
我遇到的問題是,當變數a由我鍵盤手動輸入的時候,在console欄位能正確的印出為質數的數字,然而當我將變數a改成迴圈的時候,卻始終只能印出一個數字101,我感到不解。
以下是我更之前寫的code,加了點修改:
Scanner MyInput = new Scanner(System.in);
int a;
System.out.print("請輸入變數a:");
a=Integer.parseInt(MyInput.nextLine());
//以下為質數判定
for (int i=1, Prime=0; i<=a; i++) {
if ((a%i)==0) {
Prime+= i;
if (Prime==a+1){
System.out.print(Prime-1+ "\t");
}
}
}
當我用鍵盤輸入變數a,假設為5(if敘述判定為質數),在console欄位會印出來,而如果輸入6則不會。
只是現在我想把它改為自動印出2~100中所有質數,卻卡住了。
此外,據我在書中學的,在for迴圈中宣告的變數在出了迴圈就會消失,所以我把變數Prime改寫成這種寫法,在進入下一次迴圈的時候,Prime應該會重設?
另外新帳號好像不能回應?
針對gundam1999的問題,如果我while先寫,那應該會和下方for形成巢狀迴圈,即使我沒{}?
謝謝各位幫忙原來是我while沒{}!!
當變數a由我鍵盤手動輸入的時候,在console欄位能正確的印出為質數的數字
這點我試不出來,我放棄
將變數a改成迴圈的時候,卻始終只能印出一個數字101
由執行「一次」改成迴圈(多次)時
要注意初始值的設定/歸零
以你的程式為例
可能是 Prime 的值沒有重設(第一個 a 跑完迴圈之後 Prime 值已經變了)
我是只有稍微摸過Java的生手, 好奇問下..
while 有使用 {} 把下面的 for迴圈包起來嗎?