2017-05-07 115 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'是一个参数;它将被设置为当方法被调用时传递的任何参数。唯一的问题是:没有任何事情叫它。 –

相关问题