黑马程序员技术交流社区

标题: 请问大大下面代码编译通过,运行出错,问题在哪? [打印本页]

作者: 嘿马    时间: 2013-11-14 07:41
标题: 请问大大下面代码编译通过,运行出错,问题在哪?
本帖最后由 嘿马 于 2013-11-14 07:43 编辑

             刚报名java基础班,打算学好再去黑马学习高深技术,今早编程出了个问题,希望有大大能够帮忙指点一下!
             运行时显示错误: 在类 Person 中找不到主方法, 请将主方法定义为: public static void main(String[] args)
class Person
{
   int high;
   String name;
   void play()
  {
    System.out.println("name:"+name+","+"high="+high+"cm");
  }
}
class Mingdan
{
public static void main(String[] args)
{
  Person c=new Person();
  c.high=175;
  c.name="小强";
  c.play();
}
}

作者: 狼王    时间: 2013-11-14 07:52
运行错了吗?name:小强,high=175cm,这是你想要的结果吗?如果是请在Mingdan类前面加public关键字
作者: 星星Fighting    时间: 2013-11-14 08:15
你在Mingdan类的前面加一个public 关键字就可以了,一个类的类文件名必须跟类名相同,并且需要只能也必须有一个public类的
作者: 星星Fighting    时间: 2013-11-14 08:16
加一个public,不过要是在eclipse中不加好像也能运行正确
作者: lichao    时间: 2013-11-14 08:18
Person类中是没有主函数的所以运行时会出错,你的主函数在Mingdan类中,编译通过后的运行命令应该是:java Mingdan
作者: 嘿马    时间: 2013-11-14 08:21
谢谢狼王!没有加public的情况下,发现自己的问题,说出来给以后遇到此问题的同学参考一下!写好上面代码后,编译后显示没有错误,运行时一定要用 java mingdan  这个类名,如果用java Person这个类名的话就会出现上面我遇到的问题,原因在于类名person里面是在定义属性和行为,而mingdan这个类名里面是主函数!(刚学java,上面仅是个人理解,可能有错误!)
作者: 嘿马    时间: 2013-11-14 08:23
狼王 发表于 2013-11-14 07:52
运行错了吗?name:小强,high=175cm,这是你想要的结果吗?如果是请在Mingdan类前面加public关键字 ...

谢谢狼王!没有加public的情况下,发现自己的问题,说出来给以后遇到此问题的同学参考一下!写好上面代码后,编译后显示没有错误,运行时一定要用 java mingdan  这个类名,如果用java Person这个类名的话就会出现上面我遇到的问题,原因在于类名person里面是在定义属性和行为,而mingdan这个类名里面是主函数!(刚学java,上面仅是个人理解,可能有错误!)

作者: 嘿马    时间: 2013-11-14 08:26
lichao 发表于 2013-11-14 08:18
Person类中是没有主函数的所以运行时会出错,你的主函数在Mingdan类中,编译通过后的运行命令应该是:java ...

谢谢了,后来发现就是你说的这样,谢谢了!
作者: 菜不鸟    时间: 2013-11-14 22:54
没有错吧!
作者: com_heima    时间: 2013-11-16 11:48
与public无关。编译,运行 Mingdan类即可。
作者: 马明杨    时间: 2013-11-16 13:18
这个问题希望引起初学者的注意:
你应该是文件的名字是Person.java把?

是这样的,程序会现加载有main()方法的类,如果你执行java Person,此类没有main()方法,当然报错!但是编译确实通过的,即javac Person是不会报错的。
注意:一般情况下,一个文件中最好只有一个类,一般main方法存在public 类中(同一个文件中只能有一个public 类)

你这个提的解决办法是;1:运行Mingdan这个类,2:把文件名改为Mingdan.java

class Person
{
   int high;
   String name;
   void play()
  {
    System.out.println("name:"+name+","+"high="+high+"cm");
  }
}
class Mingdan
{
        public static void main(String[] args){

          Person c=new Person();
          c.high=175;
          c.name="小强";
          c.play();
        }
}


作者: 繁华终成泣    时间: 2013-11-16 13:28
类运行错了,运行MingDan类就可以了

作者: 梦飞扬    时间: 2013-11-17 10:08
突然明白类的 内容了,一直写主函数时用的就是类   虽说问题不同但很 收益




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