黑马程序员技术交流社区

标题: 搞不清楚代码哪错 大伙帮忙看看 [打印本页]

作者: 小羽天空    时间: 2013-6-10 22:44
标题: 搞不清楚代码哪错 大伙帮忙看看
本帖最后由 小羽天空 于 2013-6-11 13:05 编辑

import java.util.*;

public class Test10 {
/**
  * @param args
  */
public static void main(String[] args) {
  TreeSet<student> t = new TreeSet<student>(new comparacout());
  t.add(new student("zhangsan",18,88));
  //t.add(new student("lisi",19,98));
  //t.add(new student("wangwu",18,89));
  //t.add(new student("zhangsan",21,90));
  //t.add(new student("zhaoliu",18,88));
  
  Iterator<student> it = t.iterator();
  while(it.hasNext())
  {
   //Student stu = (Student)it.next();
   //System.out.println(stu.toString());
   System.out.println(it.next().toString());
  }
}
}
class comparacout implements Comparator
{

public int compare(Object o1, Object o2) {
  student s1 = (student)o1;
  student s2 = (student)o2;
  
  int num = new Integer(s1.getcount()).compareTo(new Integer(s2.getcount()));
  if(num==0)
   return s1.compareTo(s2);
  return num;
}
  
}
class student implements Comparable<student>
{
private String name;
private int age;
private int count;
public student(String name,int age,int count)
{
  this.name = name;
  this.age = age;
  this.count = count;
}
public int HashCode()
{
  return name.hashCode()+age+34;
}

public boolean equals(Object s)
{
  if(!(s instanceof student) )
   throw new  ClassCastException("class dont't like");
  
  student d = (student)s;
  return this.name.equals(d.name) && this.age==d.age;
  
}

public int compareTo(student s) {
  int num = this.name.compareTo(s.name);
  if(num==0)
   return new Integer(this.age).compareTo(new Integer(s.age));
  return num;
}

String getname()
{
  return this.name;
}
int getnage()
{
  return this.age;
}
int getcount()
{
  return this.count;
}
public String toString()
{
  return name+":"+age+" :count :"+count;
}


}

他会报错误:但总觉得没错啊,好晕啊!
Exception in thread "main" java.lang.NoClassDefFoundError: com/itheima/student (wrong name: com/itheima/Student)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
at com.itheima.Test10.main(Test10.java:16)


作者: 尹丽峰    时间: 2013-6-10 22:56
没找到Class类,没错啊。。。com.itheima.Test10.main(Test10.java:16)
zhangsan:18 :count :88

作者: 小冰块    时间: 2013-6-10 23:34
我在电脑上运行也是对的,建议你看一下你保存的文件名是不是Test10.java

而且根据异常提示,你是哪个student的大小写弄错了(虽然我运行是正常的)
作者: 杨增坤    时间: 2013-6-11 00:12
public static void main(String[] args) {
                  TreeSet<student> t = new TreeSet<student>();
}在这个主函数中我把那个(new comparacout())去掉了,然后就能运行了!
作者: 小羽天空    时间: 2013-6-11 10:12
本帖最后由 小羽天空 于 2013-6-11 10:15 编辑
小冰块 发表于 2013-6-10 23:34
我在电脑上运行也是对的,建议你看一下你保存的文件名是不是Test10.java

而且根据异常提示,你是哪个stude ...

我也觉得,我思路没错啊,但就是错了,纠结,你也看了,我就怕和我另一个类中的Student搞混,特意把它改成了小写的student。但是。。。。
作者: xiaohu1218    时间: 2013-6-11 10:52
建议楼主检查下类名和包名, 这段代码我运行后也没有问题的,或者可以将student改为Stu试试,重新编译运行
作者: 小羽天空    时间: 2013-6-11 12:31
xiaohu1218 发表于 2013-6-11 10:52
建议楼主检查下类名和包名, 这段代码我运行后也没有问题的,或者可以将student改为Stu试试,重新编译运行 ...

美女,你的方法凑效了谢谢,我改了一个类名就好了;但是我的包中没有和student相同的类,为什么会出现这个原因呢?
作者: 黑马伍哲沂    时间: 2013-6-11 12:35
小羽天空 发表于 2013-6-11 12:31
美女,你的方法凑效了谢谢,我改了一个类名就好了;但是我的包中没有和student相同的类,为什么会出现这 ...

问题已解决,请更换帖子状态到已解决。
另外,提问和帮人解答问题请尽量遵循此帖准则。 谢谢- -
http://bbs.itheima.com/thread-55113-1-1.html
作者: xiaohu1218    时间: 2013-6-11 16:35
小羽天空 发表于 2013-6-11 12:31
美女,你的方法凑效了谢谢,我改了一个类名就好了;但是我的包中没有和student相同的类,为什么会出现这 ...

可能你之前编译运行过Student类吧,可以尝试检查下工作空间里的文件,看看有没有Student.class文件
作者: 小羽天空    时间: 2013-6-11 18:11
xiaohu1218 发表于 2013-6-11 16:35
可能你之前编译运行过Student类吧,可以尝试检查下工作空间里的文件,看看有没有Student.class文件 ...

有Student类,没有student
作者: xiaohu1218    时间: 2013-6-12 11:28
小羽天空 发表于 2013-6-11 18:11
有Student类,没有student

这个我就不是很清楚了,抱歉啊
不过类名首字母一般都大写,小写的类名显得不太专业啊
建议尽量避免同一个包中类名重复
作者: 麦子    时间: 2013-6-12 11:36
zhangsan:18 :count :88
正常输出




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