2014-11-06 67 views
0

我想通過讓用戶輸入一個數字來打印出數字是否完美。例如,當我輸入一個完美的數字時,它會告訴我這不是一個完美的數字,並且無法弄清楚原因。我的最終代碼需要打印出來,像6 = 1 + 2 + 3。但我還沒有那麼遠。來自輸入的完美數字

Scanner scanner = new Scanner(System.in); 
    System.out.println("Enter a positive integer: "); 
    int n = scanner.nextInt(); 

    int sum = 0; 


    for(int i = 1;i<n;i++){ 

      if(n%2==0) 
      sum += i; 
    } 

     if(sum==n){ 
      System.out.println(n + " is a positive number"); 
     } 



     else { 
      System.out.println(n + " is not a positive number"); 


    } 
+0

您的打印聲明說「積極」,而不是「完美」。另外,手動運行這個代碼*。你輸入6,我們從i = 1開始,它小於6,sum + = 1意味着總和現在是1.我變成2,它小於6,我們加上2,總和現在變成3.我變成3,總和bcomes 6.我變成了4,總和現在變成了7,然後就這樣了。如果你不明白爲什麼它沒有說正確的話,那麼在第一步發佈之前就是找出它的實際內容。 – 2014-11-06 06:56:26

+0

糟糕,它應該說是完美的。無論如何,我固定2是我,所以我現在能夠得到正確的輸出! – user3247712 2014-11-06 07:00:24

+0

那麼你也應該從收到的答案列表中選擇一個「正確的答案」,或者刪除你的問題。 – 2014-11-06 16:50:03

回答

1

if(n%2==0)

應該

if(n%i==0)

否則,你的總和將是所有數字的總和從1n-1甚至n,或0奇數n

0

你的代碼是這樣:

 Scanner scanner = new Scanner(System.in); 
     System.out.print("Enter a positive integer: "); 
     int n = scanner.nextInt(); 
     int sum = 0; 
     for(int i = 1;i<n;i++){ 
       if(n%i==0) 
       sum += i; 
     } 

     if(sum==n){ 
      System.out.println(n + " is a perfect number"); 
      System.out.print(n+" = "); 
      for(int i=1;i<n;i++) 
       if(n%i==0) System.out.print((i!=1?" + ":" ") + i);     
     } 
     else { 
      System.out.println(n + " is not a perfect number"); 
     } 

格式化輸出,而不使用三元運算符:

  System.out.println(n + " is a perfect number"); 
      System.out.print(n+" = "); 
      for(int i=1;i<n;i++) 
       if(n%i==0) { 
       if (i==1) 
        System.out.print(i);     
       else 
        System.out.print(" + " + i);     
       } 
+0

你能解釋一下代碼中的System.out.print(i!= 1?「+」:「」)嗎? – user3247712 2014-11-07 00:40:45

+0

'(i!= 1?「+」:「」)'這裏我使用的三元運算符就是If。 如果(我!= 1)//如果'i'不同於1 {迴歸 「+ 」} //返回字符串「 +」 其他 {返回 「」} //返回空字符串 ___ [更多信息](http://alvinalexander.com/java/edu/pj/pj010018) – SkyMaster 2014-11-07 00:55:44

+0

三元運算符用於格式化輸出:N = 1 + 2 + 3 + ....... – SkyMaster 2014-11-07 01:08:24

0

檢查了這一點。 :)

public static String isPerfect(int num){ 
     int product = 1; 
     for (int x=1; x<num; x++){ 
      product *= x; 
      if (product == num){ 
       return num + " is a perfect number"; 
      } 
     } 

     return num + " is a not perfect number"; 
    }