简单的Java作业

Min*_*Luo 1 java math

所以我是一个java newby,我正在做这个家庭作业,要求我写一个程序来找到前四个完美的数字.我想我的一切都大致正确,但我无法测试我的程序,因为我尝试运行程序时出现错误消息"线程异常"主"javva.lang.NoSuchMethodError:main".编译得很好,我认为所有数学都是正确的:

import java.awt.*;
public class PerfectNumbers
{
    int num = 1, divisor1 = 1, divisor2, divSum, perfNum1, perfNum2, perfNum3, perfNum4;
    public void main()
    {
       do
       {
         while (num != divSum)
         {
             if (num % divisor1 == 0 && divisor1 != Math.sqrt(num))
                 {
                     divSum += divisor1;
                     divisor2 = num / divisor1;
                     divSum += divisor2;
                     divisor1++;
                 }
             else if (num % divisor1 !=0 && divisor1 != Math.sqrt(num))
                 divisor1++;
             else if (divisor1 == Math.sqrt(num))
                 {
                 divSum += Math.sqrt(num);
                 divisor1 = 1;
                 }
         }
         if (num == divSum && perfNum1 == 0)
             {
                 perfNum1 = num;
                 num++;
                 divSum = 0;
             }
         else if (num == divSum && perfNum2 == 0)
             {
                 perfNum2 = num;
                 num++;
                 divSum = 0;
             }
         else if (num == divSum && perfNum3 == 0)
             {
                 perfNum3 = num;
                 num++;
                 divSum = 0;
             }
         else if (num == divSum && perfNum4 == 0)
             {
                 perfNum4 = num;
                 break;
            }
       }
       while (perfNum4 == 0);
       if (perfNum4 == 0)
       System.out.print("The first four perfect numbers are "
           + perfNum1 + ", " + perfNum2 + ", " + perfNum3 + ", "
           + perfNum4 + ".");

    }
}
Run Code Online (Sandbox Code Playgroud)

PS非常感谢任何有关newb语法或风格错误的建议!

Geo*_*rge 8

public void main()
Run Code Online (Sandbox Code Playgroud)

应该

public static void main(String[] args)
Run Code Online (Sandbox Code Playgroud)

  • 不,这是因为`divSum`在与`num`比较之前没有初始化 (2认同)