为什么我的程序没有正确运行?

时间:2017-05-07 01:41:15

标签: java for-loop

对于我的学校项目,我必须创建一个程序,根据用户(教师)想要的完美数字输出完整的数字。用户可以从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));
  }
}

1 个答案:

答案 0 :(得分:0)

你没有声明变量&#34; number&#34;在你的方法中。

编辑:你没有 SET 变量编号,我误解了我的上一个陈述。