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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马姗姗 中级黑马   /  2014-2-10 12:27  /  1111 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这段代码为什么跑不起来?哪里有错误??万分感谢了。
public class Student
{
  public static void main(String[] args)
{
                List<studentclass> list = new ArrayList<studentclass>();
                studentclass s1 = new studentclass();
                studentclass s2 = new studentclass();
                studentclass s3 = new studentclass();
                s1.set("张三", 1, "男");
                s1.set(90.5);
                s2.set("李四", 2, "女");
                s2.set(180.0);
                s3.set("王五", 3, "男");
                s3.set(68.0);
                //排序
                list.add(s1);
                list.add(s2);
                list.add(s3);
                Collections.sort(list, new mysort());
                for (studentclass s : list)
                {
                    System.out.println(s.toString());
                }
        }
}
class studentclass
{
   String name;
   int code;
   String sexy;
   double mark;
   public void set(String name,int code,String sexy)
   {
      this.name=name;
      this.code=code;
      this.sexy=sexy;
   }
   public void set(double mark)
   {
       this.mark=mark;
   }
   public String getname()
   {
       return name;
   }
   public int getcode()
   {
       return code;
   }
   public String getsexy()
   {
       return sexy;
   }
   public double getmark()
   {
       return mark;
   }
   public String toString()
   {
      String infor="姓名:"+name+" "+"学号:"+code+" "+"性别:"+sexy+" "+"成绩:"+mark;
      return infor;
   }
}

class mysort implements Comparator<studentclass>
{
        public int compare(studentclass o1, studentclass o2)
        {
                //通过对应字段
                return String.valueOf(o1.getmark()).compareTo(String.valueOf(o2.getmark()));
        }
}

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 淡定

查看全部评分

6 个回复

正序浏览
少写啦
  1. class mysort implements Comparator<studentclass>
  2. {
  3.         public int compare(studentclass o1, studentclass o2)
  4.         {
  5.                                 int i;
  6.                 //通过对应字段
  7.                                 if(o1.getmark() > o2.getmark()){
  8.                                         i = 1;
  9.                                 }else if(o1.getmark() < o2.getmark()){
  10.                                         i = -1;
  11.                                 }else{
  12.                                         i = 0;
  13.                                 }
  14.                                 return i;
  15.         }
  16. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
看你程序的意思,你是想按成绩排名吧!你的比较器里compareTo方法比较的是字符串形式的mark,它会比较每个字符,返回首个不相同字符的Unicode差(前减后),想要得到想要的答案,你的比较器应该这样写!
  1. class mysort implements Comparator<studentclass>
  2. {
  3.         public int compare(studentclass o1, studentclass o2)
  4.         {
  5.                                 int i;
  6.                 //通过对应字段
  7.                                 if(o1.getmark() > o2.getmark()){
  8.                                         i = 1;
  9.                                 }else if(o1.getmark() < o2.getmark()){
  10.                                         i = -1;
  11.                                 }else{
  12.                                 }
  13.         }
  14. }
复制代码



回复 使用道具 举报
代码没有问题啊~
可能是忘记导包了吧~
你可以尝试学习使用eclipse快捷键,ctrl+shift+o快速导包,不过要注意,有相同类名的包,千万别导错了~
回复 使用道具 举报
额,一个包都没有导,,


import java.util.*;
回复 使用道具 举报
导入工具包
import java.util.*;
回复 使用道具 举报
你没有导包啊{:soso_e127:}
  1. import java.util.ArrayList;
  2. import java.util.Collections;
  3. import java.util.Comparator;
  4. import java.util.List;

  5. public class Student
  6. {
  7.   public static void main(String[] args)
  8. {
  9.                 List<studentclass> list = new ArrayList<studentclass>();
  10.                 studentclass s1 = new studentclass();
  11.                 studentclass s2 = new studentclass();
  12.                 studentclass s3 = new studentclass();
  13.                 s1.set("张三", 1, "男");
  14.                 s1.set(90.5);
  15.                 s2.set("李四", 2, "女");
  16.                 s2.set(180.0);
  17.                 s3.set("王五", 3, "男");
  18.                 s3.set(68.0);
  19.                 //排序
  20.                 list.add(s1);
  21.                 list.add(s2);
  22.                 list.add(s3);
  23.                 Collections.sort(list, new mysort());
  24.                 for (studentclass s : list)
  25.                 {
  26.                     System.out.println(s.toString());
  27.                 }
  28.         }
  29. }
  30. class studentclass
  31. {
  32.    String name;
  33.    int code;
  34.    String sexy;
  35.    double mark;
  36.    public void set(String name,int code,String sexy)
  37.    {
  38.       this.name=name;
  39.       this.code=code;
  40.       this.sexy=sexy;
  41.    }
  42.    public void set(double mark)
  43.    {
  44.        this.mark=mark;
  45.    }
  46.    public String getname()
  47.    {
  48.        return name;
  49.    }
  50.    public int getcode()
  51.    {
  52.        return code;
  53.    }
  54.    public String getsexy()
  55.    {
  56.        return sexy;
  57.    }
  58.    public double getmark()
  59.    {
  60.        return mark;
  61.    }
  62.    public String toString()
  63.    {
  64.       String infor="姓名:"+name+" "+"学号:"+code+" "+"性别:"+sexy+" "+"成绩:"+mark;
  65.       return infor;
  66.    }
  67. }

  68. class mysort implements Comparator<studentclass>
  69. {
  70.         public int compare(studentclass o1, studentclass o2)
  71.         {
  72.                 //通过对应字段
  73.                 return String.valueOf(o1.getmark()).compareTo(String.valueOf(o2.getmark()));
  74.         }
  75. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
何伟超 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马