【求教】大神一道java问题。在下感激不尽了!!!!!

想要实现在这段代码下按成绩由高到低来排序输出,用sort函数实现能做到吗?或者说用冒泡法能否做得到?

代码:
public class Student
{
public static void main(String[] args)
{
studentclass s1=new studentclass();
studentclass s2=new studentclass();
studentclass s3=new studentclass();
s1.set("张三",1,"男");
s1.set(90.5);
s2.set("李四",2,"女");
s2.set(80.0);
s3.set("王五",3,"男");
s3.set(68.0);
System.out.println(s1.toString());
System.out.println(s2.toString());
System.out.println(s3.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;
}
}

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 mysort implements Comparator<studentclass>{
public int compare(studentclass o1, studentclass o2) {
//通过对应字段
return String.valueOf(o1.getmark()).compareTo(String.valueOf(o2.getmark()));
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-10-31
实现肯拍二宝接口,应该是这么读的,我英语不好,没有IDE我不会打这个英文单词,见谅追问

....恩,是那个意思,但能换种方法么?觉得那种比较复杂。

追答

这个还复杂?用冒泡也行,不过写起来比较困难啊

第2个回答  2013-10-31
用冒泡排序能解决。。先取出一个分数,然后再取出一个跟前面做比较。。。哪个大就跟下一个做比较。。。大概理论就是这样。。比较简单追问

主要是代码方面怎么实现啊,冒泡法不是得要数组才能做到吗?问题是我这是类变量。。。

第3个回答  2013-10-31
可以实现的 Arrays类里有sort(object o)的函数..但是你得在下面的类里边实现comparable接口,覆盖compareTo方法追问

这个具体怎么实现呢?我这个不是数组变量。还望能给出具体点的代码,谢谢了!

第4个回答  2013-10-31
建议你去转转专业的论坛

请教几个关于JAVA的问题,请哥哥姐姐不吝赐教,小弟感激不尽
i在小于5的情况下才能运行...所以i运行了4次,分别是1,2,3,4 j在小于或等于1的时候才能运行 所以每次都是1,每次运行一次 因为在i里面所以总共运行了4次..也就是说i循环和j循环的执行次数分别是 4,4

几道JAVA题目,求好心人给下答案,感激不尽
1、public static void main(String[] args)2、public finall static 3、3 4、抽象类 5、implements 6、类:一个包含属性、方法,使用class关键字定义 对象:创建对象必须使用new关键字,对象其实在内存中存储的是类的引用地址。7、try是可能发生异常的内容;catch是发生异常后要处理的代码;finally是...

请广大网友帮我一下这道Java题目,感激不尽!!在线等,挺急的。。
import java.util.Scanner;public class Account { \/\/私有化变量 private double balance;\/\/get方法 public double getBalance() { return balance;} \/\/set方法 public void setBalance(double balance) { this.balance = balance;} public double deposit(int b){ this.balance=b+this.balance;return...

JAVA面试试题,我是初学者下面的题都不会,请大家帮我做做,谢谢了感激不...
22:接口里可以定义属性,但必须是常量。修饰符为:interface;23:数组里没有length()这个方法,String中有length()这个方法;24:标识符就是常量、变量、函数自定义的名称。Java标识符由数字、字母、下划线、$组成。首位不能是数字,Java关键字不能当作Java标识符。25:两个if需要执行两次逻辑判定。一...

java运行后显示方法声明无效,需返回类型,希望高手帮忙解答一下,感激...
showMessageDialog(null,output)该方法不知道你执行什么操作,以下是我个人对你该程序的理解,我写了一个如下:public class Introduce { public static void main(String[] args) { String[] output={"姓名"," 年龄", "家乡", "在校任职","社会兼职","\\n","珠珠" ,"22" ,"江苏","学生会...

...函数的代码错在哪里?我是初学者,最好附上解析,在下感激不尽...
1、main方法是不属于任何类,只是一个入口。所以你在类里面用ob这个对象就是不对的,而将ob的地方可以用this关键字了。代表本类的对象。所以这个地方也会报错的。2、你在调用get方法的时候你的get方法都写了参数,而你在调用 的时候却没给传值,当然会找不到这个方法 3、Alone5_6() ob=new ...

各位物理大神们,模电题求解!救人一命胜造七级浮屠,在下感激不尽...
回答:第一问:画出直流通路解题 第二问:画出微变等效电路解题 书上例题应该有一样的步骤。具体过程还是翻翻书比较好。

JAVA的foreach问题,求大神解答,感激不尽~~~
枚举,很正常,这些是JAVA的基本语法。至于改变值,因为里面的是“复杂对象”——自定义类,是会改变的。这一点,要留意。

求教Java题!!求大神作答!!十分捉急!!感激不尽!!!
import java.util.ArrayList;import java.util.Scanner;public class Program {public static ArrayList<Integer> list = new ArrayList<Integer>();public static void main(String[] args) {Scanner scanner = new Scanner(System.in);String[] input = scanner.nextLine().trim().split(" ");for ...

Java 的安装和编译问题。我好郁闷呀,高手快来帮我一下。
你怎么能把path变量删了 那么你在命令符下将无法使用system32文件夹里的程序了 之所以要在path加上jdk程序路径 是为了在命令提示符下 找到程序,而不必在输入程序路径了

相似回答