作者dharma (達)
看板java
標題[問題] 類別的成員變數的位置
時間Thu Jan 23 00:40:40 2014
輸入一個整數n,列出2到n之間的質數
有一個地方不懂
就是著色那行的位置
為什麼放上面不行,只能放在下面的成員函數內?
import java.util.Scanner;
class Prime { //判斷是不是質數的類別
int j;
// int flag = 0; //這行不能放在這裡,會不對
char isPrime(int i) {
int flag = 0;// 放在這裡才會對
for (j = 2; j <= Math.sqrt(i); j++) {//測試到不大於根號
if (i % j == 0) { //如果可以整除,即不會是質數
flag = 1;
break;//立刻跳出for迴圈
}
}
if (flag == 1)
return 'n';//不是質數,回傳字元n
else
return 'y';//是質數,回傳字元y
}
}
//主程式
public class Prime_List {
public static void main(String[] args) {
// TODO Auto-generated method stub
int n, i;
System.out.println("請輸入一個整數:");
Scanner scan = new Scanner(System.in);// 宣告input,類型為Scanner
n = scan.nextInt(); // 叫input去讀一個int,並存到n
System.out.println("從2到" + n + "之間的質數有:\n");
Prime prime = new Prime();
for (i = 3; i <= n; i++) {//從3開始,因為省去判斷2的部分
if (prime.isPrime(i) == 'y')//如果isPrime回傳的是字母y
System.out.println(i + " ");//輸出質數i加空格
}
}
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.163.106.192
推 LPH66:成員變數只有宣告不能給值, 還有放底下的不是成員只是 local 01/23 00:44
因為有本書看到範例裡的成員變數也有賦值
所以不確定
→ CCWck:class的member要assign value請用constructor 01/23 00:58
→ mrker:member varable不能設值? 真的假的啊 01/24 11:11
→ mrker:原PO的錯誤應該是flag放在member 在前面有set成1 所以會錯 01/24 11:12
文章被s是因為註解不足,被認為是作業文?
已補上更多的註解
※ 編輯: dharma 來自: 118.163.106.192 (01/24 13:43)
推 rayyang1113:當你flag放在function外 在你每次呼叫function時 01/24 16:30
→ rayyang1113:flag的值都不會重設為0 也就是一但遇到質數flag的值被 01/24 16:34
→ rayyang1113:設為1後 flag的值就永遠是1 後面的數字也就被當質數了 01/24 16:42
推 gmoz:先去學單步執行怎麼用吧 01/29 10:14