[問題] 類別的成員變數的位置

看板java作者 (達)時間11年前 (2014/01/23 00:40), 編輯推噓3(305)
留言8則, 5人參與, 最新討論串1/1
輸入一個整數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

01/23 00:44, , 1F
成員變數只有宣告不能給值, 還有放底下的不是成員只是 local
01/23 00:44, 1F
因為有本書看到範例裡的成員變數也有賦值 所以不確定

01/23 00:58, , 2F
class的member要assign value請用constructor
01/23 00:58, 2F

01/24 11:11, , 3F
member varable不能設值? 真的假的啊
01/24 11:11, 3F

01/24 11:12, , 4F
原PO的錯誤應該是flag放在member 在前面有set成1 所以會錯
01/24 11:12, 4F
文章被s是因為註解不足,被認為是作業文? 已補上更多的註解 ※ 編輯: dharma 來自: 118.163.106.192 (01/24 13:43)

01/24 16:30, , 5F
當你flag放在function外 在你每次呼叫function時
01/24 16:30, 5F

01/24 16:34, , 6F
flag的值都不會重設為0 也就是一但遇到質數flag的值被
01/24 16:34, 6F

01/24 16:42, , 7F
設為1後 flag的值就永遠是1 後面的數字也就被當質數了
01/24 16:42, 7F

01/29 10:14, , 8F
先去學單步執行怎麼用吧
01/29 10:14, 8F
文章代碼(AID): #1It_IAdk (java)
文章代碼(AID): #1It_IAdk (java)