2016-10-24 23 views
-2

代碼:我想找兩個數字計數值的公因式嗎?

public static void main(String... args){ 
    Scanner sc = new Scanner(System.in); 
    int count =0; 
    int a= sc.nextInt(); 
    int b =sc.nextInt(); 
    if(a>b){ 
     //int count =0; 
     for(int i =1;i<=a;i++){ 
      if(a/i == 0 && b/i == 0){ 
       count++; 
       System.out.println(count); 
      } 
     } 
    }else if(a<b){ 
     //int count =0; 
     for(int i=1;i<=b;i++){ 
      if(a/i == 0 && b/i == 0){ 
       count++; 
       System.out.println(count); 
      } 
     } 
    } 
} 
  1. 我沒有得到任何輸出是什麼錯誤?
  2. 我想從用戶那裏獲得輸入信息,然後找出共同因素的數量。
+1

歡迎來到SO!你應該嘗試修復你的格式,特別是代碼縮進。你絕對不應該在一行上使用多個大括號,因爲它使得看到代碼塊變得更困難。如果您不知道這是個好習慣,請閱讀[Google Java Style Guide](https://google.github.io/styleguide/javaguide.html)。 – Aurora0001

+2

你需要檢查/學習基礎數學:是否有任何數字,你可以將它們分開並得到0作爲答案? 'a/i = 0' - >'a = 0 * i' - >'a = 0'。 –

+0

@MarcB我當時也在想,但它是整數除法,所以如果除法結果數小於1,那麼結果將爲0.雖然在這個程序中,自循環條件以來永遠不會發生。 –

回答

0
if((a/i == 0)&&(b/i == 0)) 

這種情況是錯誤的 - a/i將永遠只能是零,如果a是零,或者如果它小於i。這顯然不是你想要的。

這裏您需要的是模運算符%,它將兩個操作數相除時返回餘數。

if((a%i == 0)&&(b%i == 0)) 

由於在兩個位置進行了此更改,您的程序似乎能夠正常工作。

相關問題