A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郑晓飞 中级黑马   /  2013-6-18 22:34  /  1569 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我用的是MyEditPlus,书写的程序感觉没什么问题、但是只要写了抽象方法、运行就会出问题
报这样的错:Exception in thread "main" java.lang.NoSuchMethodError
在网上搜了下、说是main函数书写有误,但是自己检查了没有错误,请大家帮忙看看、这两天写的这种程序都是这个错,很郁闷
下面粘贴两个代码
  1. public class Demo7
  2. {       
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 Point p = new Point();
  7.                 p.x = 10;
  8.                 p.y = 20;
  9.                
  10.                 PointTools pt = new PointTools();
  11.                
  12.                 pt.change(p);
  13.                 System.out.println(p.x+"   "+p.y);

  14.                
  15.         }
  16. }

  17. class PointTools
  18. {
  19.         void change(int x,int y)
  20.         {
  21.                 x = 100;
  22.                 y = 200;
  23.         }
  24.                 void change(Point p){
  25.                         p.x = 100;
  26.                         p.y = 200;


  27.                 }
  28. }
复制代码
  1. import java.util.Random;

  2. public class Tixt1 {

  3.        
  4.         public static void main(String[] args) {

  5.                 Random ran = new Random();
  6.                
  7.                 //创建三个学生类对象
  8.                
  9.                 Person p1 = new Person();
  10.                 Person p2 = new Person();
  11.                 Person p3 = new Person();
  12.                
  13.                 //对三个对象进行赋值
  14.                 p1.setName("tom");
  15.                 p1.setAge(ran.nextInt(6)+15);
  16.                
  17.                 p2.setName("james");
  18.                 p2.setAge(ran.nextInt(6)+15);
  19.                
  20.                 p3.setName("kobe");
  21.                 p3.setAge(ran.nextInt(6)+15);
  22.                
  23.                 p1.show();
  24.                 p2.show();
  25.                 p3.show();
  26.         }

  27. }

  28. class Person
  29. {
  30.         private int age;
  31.         private String name;
  32.        
  33.         public void setAge(int a){
  34.                 age = a;
  35.         }
  36.         public void setName(String n){
  37.                 name = n;
  38.         }
  39.         public int getAge(){
  40.                 return age;
  41.         }
  42.         public String getName(){
  43.                 return name;
  44.         }
  45.        
  46.         void show(){
  47.                 System.out.println("姓名:"+name+" 年龄:"+age);
  48.         }
  49.        
  50. }
复制代码

9 个回复

倒序浏览
没有错啊,我可以运行

TM截图20130618231301.png (25.13 KB, 下载次数: 0)

TM截图20130618231301.png
回复 使用道具 举报
我试了一下,你的代码应该没有问题,在网上查了一下,一般都说这是jar包版本的问题。
回复 使用道具 举报
你是要这个结果吗?
  1. public class Demo7
  2. {        
  3.         public static void main(String[] args)
  4.         {
  5.                
  6.                 PointTools p = new PointTools();
  7.                 p.x = 10;
  8.                 p.y = 20;
  9.                
  10.                 PointTools pt = new PointTools();
  11.                
  12.                 pt.change(p);
  13.                 System.out.println(p.x+"   "+p.y);

  14.                
  15.         }
  16. }

  17. class PointTools
  18. {
  19.         public int y;
  20.                 public int x;
  21.                 void change(int x,int y)
  22.         {
  23.                 x = 100;
  24.                 y = 200;
  25.         }
  26.                 void change(PointTools p){
  27.                         p.x = 100;
  28.                         p.y = 200;


  29.                 }
  30. }
复制代码
第二个主函数类名我改的Test2,你写的Tixt1,不知道是不是特意这么起的,还是打错了!
  1. import java.util.Random;

  2. public class Test2 {

  3.         
  4.         public static void main(String[] args) {

  5.                 Random ran = new Random();
  6.                
  7.                 //创建三个学生类对象
  8.                
  9.                 Person p1 = new Person();
  10.                 Person p2 = new Person();
  11.                 Person p3 = new Person();
  12.                
  13.                 //对三个对象进行赋值
  14.                 p1.setName("tom");
  15.                 p1.setAge(ran.nextInt(6)+15);
  16.                
  17.                 p2.setName("james");
  18.                 p2.setAge(ran.nextInt(6)+15);
  19.                
  20.                 p3.setName("kobe");
  21.                 p3.setAge(ran.nextInt(6)+15);
  22.                
  23.                 p1.show();
  24.                 p2.show();
  25.                 p3.show();
  26.         }

  27. }

  28. class Person
  29. {
  30.         private int age;
  31.         private String name;
  32.         
  33.         public void setAge(int a){
  34.                 age = a;
  35.         }
  36.         public void setName(String n){
  37.                 name = n;
  38.         }
  39.         public int getAge(){
  40.                 return age;
  41.         }
  42.         public String getName(){
  43.                 return name;
  44.         }
  45.         
  46.         void show(){
  47.                 System.out.println("姓名:"+name+" 年龄:"+age);
  48.         }
  49.         
  50. }
复制代码
你说的抽象方法要用的话注意:1.含有抽象方法的类,必须被声明为抽象类。
                                          2.抽象类必须被继承,抽象方法必须被重写。
                                          3.抽象类不能被实例化,抽象方法只需生命,不需实现。
希望对你有帮助!

1.png (1.17 KB, 下载次数: 0)

1.png

2.png (2.15 KB, 下载次数: 0)

2.png
回复 使用道具 举报
changweihua 发表于 2013-6-18 23:14
没有错啊,我可以运行

我的在MyEditPlus上方法名直接显示的红线
运行提示的错误是这个:Exception in thread "main" java.lang.NoSuchMethodError
回复 使用道具 举报
wangpan 发表于 2013-6-18 23:26
我试了一下,你的代码应该没有问题,在网上查了一下,一般都说这是jar包版本的问题。 ...

哦、代码 我看了几遍也找不出问题,这两天写的程序几个错误都是这样让人郁闷,谢谢你了,我再找找看
回复 使用道具 举报
tpsu88 发表于 2013-6-18 23:27
你是要这个结果吗?第二个主函数类名我改的Test2,你写的Tixt1,不知道是不是特意这么起的,还是打错了!你 ...

谢谢你的回答、那个类名确实是自己写错了、没注意到:L  还是你细心观察到了
回复 使用道具 举报
我这里可以直接运行,没有问题,,你换个别的软件,看看
回复 使用道具 举报
yasyas001 发表于 2013-6-18 23:45
我这里可以直接运行,没有问题,,你换个别的软件,看看

好的、我看看
回复 使用道具 举报
我把下面的方法名换掉就可以运行了。。。。。。这是为什么{:soso_e127:}
不换的话还是错误
  1. package day10;

  2. public class Demo7
  3. {       
  4.         public static void main(String[] args)
  5.         {
  6.                
  7.                 Point p = new Point();
  8.                 p.x = 10;
  9.                 p.y = 20;
  10.                
  11.                 PointChange pt = new PointChange();
  12.                
  13.                 pt.change(p);
  14.                 System.out.println(p.x+"   "+p.y);

  15.                
  16.         }
  17. }

  18. class PointChange
  19. {
  20.         void change(int x,int y)
  21.         {
  22.                 x = 100;
  23.                 y = 200;
  24.         }
  25.                 void change(Point p){
  26.                         p.x = 100;
  27.                         p.y = 200;


  28.                 }
  29. }
复制代码
原来的错误提示:

QQ截图20130618235906.png (4.24 KB, 下载次数: 0)

QQ截图20130618235906.png
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马