看板 java 關於我們 聯絡資訊
輸入一個整數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