2017-05-07 151 views
-3

爲我的學校項目我必須創建一個程序,根據用戶(老師)想要的完美數字輸出完美的數字。用戶可以從1-4中選擇任何數字,但應顯示用戶選擇的許多號碼。這是我目前的代碼。請忽略sumupTo,factorial,isprime和testGoldbach方法,請僅查看完美數字方法/代碼。爲什麼我的程序不能正確運行?

import java.util.Scanner; 

public class MyMathB 
{ 

    public static int sumUpTo(int n) 
    { 
int sum = 0; 

for (int k = 1; k <= n; k++) 
    sum += k; 

return sum; 
    } 


    public static long factorial(int n) 
    { 
long f = 1; 

for (int k = 2; k <= n; k++) 
    f *= k; 

return f; 
    } 

    public static boolean isPrime(int n) 
    { 
    if (n <= 1) 
     return false; 

int m = 2; 

while (m * m <= n) 
{ 
    if (n % m == 0) 
return false; 
    m++; 
} 

return true; 
    } 

    public static void PerfectNumbers(int number) 
{ 
    System.out.println("How many perfect numbers would you like to see? Please enter an integer from 1 to 4"); 
    Scanner s = new Scanner(System.in); 
    int numbersToSee = s.nextInt(); 
    int counts = 0; 

    for(counts = 0; counts <= numbersToSee; counts++) 
    { 
     for (int n = 5; n <= 10000; n++) 
     { 
      int temp = 0; 

      for(int i = 1; i <= number/2; i++) 
      { 
       if (number % i == 0) 
       { 
        temp += i; 

       } 
       if (temp == number) 
       { 
        System.out.println(number); 
       } 

      } 
     } 


    } 
} 

    public static boolean testGoldbach(int bigNum) 
    { 
    for (int n = 6; n <= bigNum; n += 2) 
{ 
    boolean found2primes = false; 

     for (int p = 3; p <= n/2; p += 2) 
     { 
    if (isPrime(p) && isPrime(n - p)) 
     found2primes = true; 
    } 

    if (!found2primes) 
    { 
System.out.println(n + " is not a sum of two primes!"); 
return false; 
    } 
} 

return true; 
    } 


    public static void main(String[] args) 
    { 
Scanner kb = new Scanner(System.in); 
int n; 

do 
{ 
    System.out.print("Enter an integer from 4 to 20: "); 
    n = kb.nextInt(); 
} while (n < 4 || n > 20); 

kb.close(); 

System.out.println(); 
System.out.println("1 + ... + " + n + " = " + sumUpTo(n)); 
System.out.println(n + "! = " + factorial(n)); 
System.out.println("Primes: "); 
for (int k = 1; k <= n; k++) 
    if (isPrime(k)) 
System.out.print(k + " "); 
System.out.println(); 
System.out.println("Goldbach conjecture up to " + n + ": " + testGoldbach(n)); 
    } 
} 
+0

對不起,它的「爲什麼我的程序不能正常運行?」 –

+3

編輯標題,請勿將其添加爲評論。並告訴我們會發生什麼和預期的事情。 – AntonH

+2

*「請忽略sumupTo,factorial,isprime和testGoldbach方法」*如果那些確實與再現問題行爲無關,那麼您應該從示例中刪除它們。請參閱http://stackoverflow.com/help/mcve。 – Radiodef

回答

0

你沒有在你的方法中聲明變量「number」。

編輯:你沒有SET變量數到任何東西,我misworded我的最後一句話。

+0

如果您的意思是'PerfectNumbers'方法,'number'是一個參數;它將被設置爲當方法被調用時傳遞的任何參數。唯一的問題是:沒有任何事情叫它。 –

相關問題