class m1
{
public static void Main()
{
 int a,b=0;
 double c=0,sum=0;
 for(a=1;a>=1;a++)
{
     b+=a;
 c=1/b;
}
sum+=c;
System.out.println(sum);
}
}
这个程序是自然数的阶乘倒数和。我能编译过去,但是没办法执行,返回错误是找不到main函数。有点不知道怎么会是 m我试过了大小写。

解决方案 »

  1.   

    你这个main()用大写了,应该用小写.
      

  2.   

    public static void main(String[] args)
    另外,程序其他问题不少..反正这样是肯定得不到你想要的答案的~
      

  3.   

    public   static   void   main(String[]   args)
      

  4.   

    应该是这样吧class m1
    {
        public static void main(String[] args)
        {
         int a=0,b=1;
         double c=0,sum=1;
         for(a=1;a<=5;a++)
            {
             b*=a;
             c=1/b;
             sum+=c;
            }
        
        System.out.println(sum);
        }
    }
      

  5.   


    class m1//按规范类名第一个字母大写,不过不是必须
    {
        public static void Main()//main小写,需要参数:main(String[] args),另外一般都要加static关键字
        {
         int a,b=0;
         double c=0,sum=0;
         for(a=1;a>=1;a++)//无限循环...
            {
             b+=a;//阶乘...通篇没看到*运算符...如果要改成b*=a的话,另外要修改b的初值
             c=1/b;//b是int形,1是int形,1/b也是int形,小数部分直接舍去,当b>1时c恒为0
            }
        sum+=c;//sum+=c放错地方了吧...
        System.out.println(sum);
        }
    }
      

  6.   

    class m1//按规范类名第一个字母大写,不过不是必须
    {
        public static void main()//main小写,需要参数:main(String[] args),另外一般都要加static关键字
        {
         int a,b=1;
         double c=0,sum=0;
         for(a=1;10>a;a++)//无限循环...
            {
             b*=a;//阶乘...通篇没看到*运算符...如果要改成b*=a的话,另外要修改b的初值
             c=(double)(1/b);//b是int形,1是int形,1/b也是int形,小数部分直接舍去,当b>1时c恒为0
             sum+=c;//sum+=c放错地方了吧...
            }
            System.out.println(sum);
        }
    }代码改成如上,但是错误还是一样,能编译,但是不能执行,返回错误 java.lang.NoSuchMethod :main
      

  7.   

     [code=Java]class m1//按规范类名第一个字母大写,不过不是必须
    {
         public static void main(String args[])//main小写,需要参数:main(String[] args),另外一般都要加static关键字
        {
         int a,b=1;
         double c=0,sum=0;
         for(a=1;35>a;a++)//无限循环...
            {
             b*=a;//阶乘...通篇没看到*运算符...如果要改成b*=a的话,另外要修改b的初值
             c=(double)(1/b);//b是int形,1是int形,1/b也是int形,小数部分直接舍去,当b>1时c恒为0
             sum+=c;//sum+=c放错地方了吧...
            }
            System.out.println(sum);
        }
    }[code]a<34就能执行,35以上就不能执行。
      

  8.   

    class m1
    {
        public static void main(String []args)
        {
         int a,b=1;
         double c=0,sum=0;
         for(a=1;10>a;a++)
            {
             b*=a
             c=1.0/b;
             sum+=c;
            }
            System.out.println(sum);
        }
    }这样能运行,我试过,注意,c=1.0/b;这应该用1.0,不然的话是整除,那结果永远是0.
      

  9.   

    35的时候 sum 的范围可能越界了吧,超过doulbe 类型的范围了吧
      

  10.   

    haha,我找到原因了 是数值类型的错误。 我试了,把b也置成double就可以了。但是a<35  和a<50得数都是一样。要是100就溢出了。另外,把b直接置成double和在 运算后改型,得数的精度不一样。