黑马程序员技术交流社区

标题: 为什么这个小程序会没法运行? [打印本页]

作者: 张海兵    时间: 2011-11-30 14:50
标题: 为什么这个小程序会没法运行?
本帖最后由 张海兵 于 2011-12-1 20:12 编辑

大家帮我看看这个程序,为什么会报错?
class Demo
{
        public static void main()
        {
                int[] arr = {3,5,2,65,32,33};
                int max = ArrayTool.getMax(arr);
        }
}
class ArrayTool
{
        public static int getMax(int[] arr)
        {
                int max = 0;
                for(int x = 1; x < arr.length; x++)
                {
                        if(arr[x] > arr[max])
                        max = x;
                }
                return arr[max];
        }
}
运行结果:Exception in thread "main" java.lang.NoSuchMethodError: main
作者: 胡雷    时间: 2011-11-30 14:53
public static void main(String[] args)
作者: 郝亚平    时间: 2011-11-30 15:01
本帖最后由 郝亚平 于 2011-11-30 16:00 编辑

JVM找不到入口函数main()就报错为:NoSuchMethod:main
你的main方法参数形式错误,不是Java虚拟机需要的,上楼为正解。
main方法的标准形式是public static void main(String args[])这样子写,jvm肯定认识。如果你非得该一下子这个main方法,
你唯一可以改的地方就是,可以把args改成别的有意义的标示符。其它地方都不能动。这样子,JVM也能认识你的main方法。有入口函数。就不会报这个错了。
作者: 李晓斌    时间: 2011-11-30 15:03
对的,你这个程序少了(String [] args)。
另外,你这个程序在main方法中少了输出语句System.out.println(max);
否则的话,编译通过了,也是没有达到取出最大值的效果哦。
作者: 常文艺    时间: 2011-11-30 15:39
本帖最后由 常文艺 于 2011-11-30 15:40 编辑

main()里要定义一个容器 String[] args 。
作者: 方书堂    时间: 2011-11-30 16:31
你的主函数没有啊,虚拟机找不到执行程序的路口;你要加上
public static void main(String[] args)
作者: 武超    时间: 2011-11-30 21:12
本帖最后由 武超 于 2011-11-30 21:14 编辑

他们说的确实是你这个程序不能运行的原因,你的那个java虚拟机JVM找到了入口,但是进不去啊。改成public static void main(String [] args ),再加上个输出语句就OK了
作者: 李栋    时间: 2011-11-30 21:49
我能看到错误的一个地方,但是可惜不知道这个输出会是什么,有待加强啊······平面设计的学编程的有些艰苦啊···
作者: 泼孩    时间: 2011-11-30 23:02
好好看下毕老师基础视频,里面有讲main函数
作者: zclove898    时间: 2011-12-1 00:50
你程序的主方法出错了。应该是public static void main(String[] args)
运行结果的意思就是以虚拟机没有找到主程序入口,当看到这个错误是,就说明你的主方法出错了。
作者: 李盈科    时间: 2011-12-1 17:27
main 写错了  public static void main(String[] args)
作者: 许邦存    时间: 2011-12-1 21:37
找不到执行程序的路口,主函数应该定义为public static void main(String[] args);可以看得出来你的目的是求出最大数,我觉得在应该在主函数中把最大值打印出来,加上System.out.println(max);这样可以印证自己的结果,平时中也可以这样做,先自己印证一下,呵呵,我也是新学的,共勉。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2