高手帮忙解决一下java问题

2024-12-02 18:57:44
推荐回答(2个)
回答1:

import java.util.LinkedList;

public class Queue {

/** 因为LinkedList本来就具备了队列的功能,故直接生成一个LinkedList便可以实现 */
private static LinkedList ll;

/** 构造方法,生成一个链表 */
public Queue() {
if(ll == null) {
ll = new LinkedList();
}
}

/**
* 将指定元素追加到此列表的结尾
* @param obj
*/
public void addFirst(Object obj) {
ll.add(obj);
}

/**
* 找到并移除此列表的头(第一个元素)
* @return
*/
public Object removeLast() {
return ll.remove();
}

/**
* 测试
* @param args
*/
public static void main(String[] args) {
Queue q = new Queue();
// 首先进入队列的是0,然后是1,顺序是0,1,2,3,4,5,6,7,8,9
for(int i=0; i<10; i++) {
q.addFirst(i);
}
// 先移除第一个元素,并打印出来,最先进入队列的元素是0,故打印的是0
System.out.println(q.removeLast());
// 再移除第二个元素(也就是新队列的第一个元素,因为上面已经移除了一个元素,生成了一个新的队列)
// 新队列中的第一个元素是1(因为0刚才已经被移除),故打印的是1
System.out.println(q.removeLast());
}

}

回答2:

我想如果我不做应该没有人来做了,这么少分,任务还这么大.算了我吃点亏.二十分钟后贴上代码.
幸亏做了一遍不然排序那个地方又做混了,
Student类:

public class Student implements Comparable{

private String name;
private int math;
private int english;
private int sum;

public Student(String name, int math, int english) {
super();
this.name = name;
this.math = math;
this.english = english;
this.sum=math+english;
}
public String toString(){
return "学生姓名: "+this.name+"\n"+
"数学成绩: "+this.math+"\n"+
"英语成绩: "+this.english+"\n"+
"总成绩: "+this.sum+"\n";
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getMath() {
return math;
}

public void setMath(int math) {
this.math = math;
}

public int getEnglish() {
return english;
}

public void setEnglish(int english) {
this.english = english;
}

public int getSum() {
return sum;
}

public void setSum(int sum) {
this.sum = this.math+this.english;
}

@Override
public int compareTo(Object o) {
Student s=(Student)o;
return this.sum-s.sum;
}

}
测试类:
import java.util.TreeSet;

public class StuTest {

public static void main(String[] args) {
Student aa=new Student("aa",80,90);
Student bb=new Student("bb",80,60);
Student cc=new Student("cc",50,80);
Student dd=new Student("dd",80,87);
Student ee=new Student("ee",90,85);
TreeSet treeset=new TreeSet();
treeset.add(aa);
treeset.add(bb);
treeset.add(cc);
treeset.add(dd);
treeset.add(ee);
for(Student s:treeset){
System.out.println(s.getName()+"的: 总成绩为: "+s.getSum());
}
//实现了Comparable方法的类在加入treeset时会自己动排序;

for(Student s:treeset){
System.out.println(s.toString());
}
//按总成绩排序输出对象
}

}
运行结果:
cc的: 总成绩为: 130
bb的: 总成绩为: 140
dd的: 总成绩为: 167
aa的: 总成绩为: 170
ee的: 总成绩为: 175
学生姓名: cc
数学成绩: 50
英语成绩: 80
总成绩: 130

学生姓名: bb
数学成绩: 80
英语成绩: 60
总成绩: 140

学生姓名: dd
数学成绩: 80
英语成绩: 87
总成绩: 167

学生姓名: aa
数学成绩: 80
英语成绩: 90
总成绩: 170

学生姓名: ee
数学成绩: 90
英语成绩: 85
总成绩: 175