20165324 第十週課下補作

20165324 第十週課下補作

知識點總結

20165324《Java程序設計》第六週html

未完成做業爲:

數據結構排序:

  • 在數據結構和算法中,排序是很重要的操做,要讓一個類能夠進行排序,有兩種方法:
    1. 有類的源代碼,針對某一成員變量排序,讓類實現Comparable接口,調用Collection.sort(List)
    2. 沒有類的源代碼,或者多種排序,新建一個類,實現Comparator接口 調用Collection.sort(List, Compatator)
  • 針對下面的Student類,使用Comparator編程完成如下功能:
    1. 在測試類StudentTest中新建學生列表,包括本身和學號先後各兩名學生,共5名學生,給出運行結果(排序前,排序後)
    2. 對這5名同窗分別用學號和總成績進行增序排序,提交兩個Comparator的代碼
    3. 課下提交代碼到碼雲

補作:對這5名同窗分別用學號和總成績進行增序排序,提交兩個Comparator的代碼。
完整代碼爲:java

/*
數據結構—排序
 */
/*
數據結構—排序
 */
package yan;
import java.util.*;
class StudentKey implements Comparable {
    double d=0;
    StudentKey (double d) {
        this.d=d;
    }
    public int compareTo(Object b) {
        StudentKey st=(StudentKey)b;
        if((this.d-st.d)==0)
            return -1;
        else
            return (int)((this.d-st.d)*1000);
    }
}
class Student  {
    private String name;
    private int ID;
    private double mathScore;
    private double englishScore;
    private double javaScore;
    private double sum = 0;
    Student(String name, int ID,double mathScore,double englishScore,double javaScore) {
        this.name = name;
        this.ID = ID;
        this.mathScore=mathScore;
        this.englishScore=englishScore;
        this.javaScore=javaScore;
    }
    public double getMathScore() {
        return mathScore;
    }
    public double getEnglishScore() {
        return englishScore;
    }
    public double getJavaScore(){
        return javaScore;
    }
    public double getSum() {
        return sum = mathScore + englishScore+javaScore;
    }
    public String getName() {
        return name;
    }
    public int getID() {
        return ID;
    }
}
public class Test1 {
    public static void main(String args[ ]) {
        TreeMap<StudentKey,Student>  treemap= new TreeMap<StudentKey,Student>();
        String str[]={"王瑤佳","楊金川","何春江","李東駿","陳卓"};
        int ID[]={22,23,24,25,26};
        double m[]={78,84,85,98,87};
        double p[]={79,77,87,89,91};
        double e[]={99,78,88,74,68};
        Student student[]=new Student[5];
        for(int k=0;k<student.length;k++) {
            student[k]=new Student(str[k],ID[k],m[k],p[k],e[k]);
        }
        StudentKey key[]=new StudentKey[5] ;
        for(int k=0;k<key.length;k++) {
            key[k]=new StudentKey(student[k].getID());
        }
        for(int k=0;k<student.length;k++) {
            treemap.put(key[k],student[k]);  //put方法添加結點
        }
        int number=treemap.size();
        System.out.println("按學號排序::");
        Collection<Student> collection=treemap.values();//遍歷
        Iterator<Student> iter=collection.iterator();//迭代
        while(iter.hasNext()) {
            Student stu=iter.next();
            System.out.println(stu.getName()+" ID:"+stu.getID()+" 英語成績:"+stu.getEnglishScore()+" Java成績:"+stu.getJavaScore()+" 數學成績:"+stu.getMathScore());
        }
        treemap.clear();
        for(int k=0;k<key.length;k++) {
            key[k]=new StudentKey(student[k].getSum());
        }
        for(int k=0;k<student.length;k++) {
            treemap.put(key[k],student[k]);
        }
        number=treemap.size();
        System.out.println("按總成績排序::");
        collection=treemap.values();
        iter=collection.iterator();
        while(iter.hasNext()) {
            Student stu=(Student)iter.next();
            System.out.println(stu.getName()+" ID:"+stu.getID()+" 總成績:"+stu.getSum());
        }
    }
}
  • 測試截圖:

未完成分析:算法

  • 問題1:分類混亂,尤爲Student類在src目錄下屢次改寫
  • 問題1解決方法:靈活使用包來對類進行區分,在課上進行測試時,重建一個IDEA項目,統一編寫。
  • 問題2:時間未能把握,未能提交任何截圖
  • 問題2解決方法:完成一部份內容,就能夠儘快上傳相應截圖。

第十五章編程題:

編程題一編程

import java.util.*;
public class Dome01 {
    public static void main(String[] args) {
        Stack<Integer> stack=new Stack<Integer>();
        int temp,m,n;
        stack.push(3);
        stack.push(8);
        System.out.println("輸入須要打印的前n項的值(n至少爲3):");
        Scanner sc=new Scanner(System.in);
        int number=sc.nextInt();
        if(number>2){
            System.out.println(3);
            System.out.println(8);
        }
        for (int i = 0; i < number-2; i++) {
            m=stack.pop();//出棧8
            n=stack.pop();//出棧3
            temp = 2*(m+n);
            stack.push(n);//入棧3
            stack.push(m);//入棧8
            stack.push(temp);//入棧22
            System.out.println(temp);
        }
    }
}
  • 實驗截圖:

編程題二數據結構

import java.util.Iterator;
import java.util.LinkedList;
import java.util.TreeMap;
import java.util.TreeSet;

/*
1.定義鏈表保存學生英語成績
2.遍歷鏈表
3.英語成績保存至樹中
 */
public class Dome02 {
    public static void main(String[] args) {
        LinkedList<Munber> mylist=new LinkedList<Munber>();
        TreeSet<Integer> mytree=new TreeSet<Integer>();
        String name[]={"hcj","aaa","bbb","ccc"};
        int  score[]={45,99,78,98};
        Munber munber[]=new Munber[4];
        for(int i=0;i<4;i++) {
            munber[i]=new Munber(name[i],score[i]);
            mylist.add(munber[i]);
        }
        Iterator<Munber> iter=mylist.iterator();
        while (iter.hasNext()) {
            Munber m=iter.next();
            mytree.add((int) m.getEnglishScore());
        }
        Iterator<Integer> te=mytree.iterator();
        while (te.hasNext()) {
            int temp=te.next();
            System.out.println(temp);
        }
    }
}
class Munber implements Comparable {
    private String name;
    private int EnglishScore;
    Munber(String name,int EnglishScore) {
        this.name=name;
        this.EnglishScore=EnglishScore;
    }
    public String getName() {
        return name;
    }
    public int  getEnglishScore() {
        return  EnglishScore;
    }
    public int compareTo(Object b) {
        Munber st=(Munber) b;
        return (this.getEnglishScore()-st.getEnglishScore());
    }
}
  • 實驗截圖

編程題三數據結構和算法

/*
使用樹
 */
import java.util.Collection;
import java.util.Iterator;
import java.util.TreeMap;
public class Dome03 {
    public static void main(String[] args) {
        TreeMap<Key,Yan> treeMap=new TreeMap<Key,Yan>();
        double  price[]={100,101,102,99,98,97,103,104,96,95};
        double capacity[]={45,65,25,78,58,47,88,13,24,77};

        Yan Upan[]=new Yan[10];
        Key key[]=new Key[10];
        for(int i=0;i<10;i++) {
            Upan[i]=new Yan(price[i],capacity[i]);
            key[i]=new Key(Upan[i].getCapacity());
            treeMap.put(key[i],Upan[i]);
        }
        int number=treeMap.size();
        System.out.println("按價格排序");
        Collection<Yan> collection=treeMap.values();
        Iterator<Yan> iter=collection.iterator();
        while(iter.hasNext()) {
            Yan yan=iter.next();
            System.out.println(yan.getPrice()+" "+yan.getCapacity());
        }
        treeMap.clear();
        for(int i=0;i<10;i++) {
            key[i]=new Key(Upan[i].getPrice());
            treeMap.put(key[i],Upan[i]);
        }
        System.out.println("按容量排序");
        collection=treeMap.values();
        iter=collection.iterator();
        while (iter.hasNext()) {
            Yan yan=iter.next();
            System.out.println(yan.getPrice()+" "+yan.getCapacity());
        }
    }
}
class Yan {
    private double capacity;
    private double price;

    Yan(double capacity, double price) {
        this.price = price;
        this.capacity = capacity;

    }

    public double getPrice() {
        return price;
    }

    public double getCapacity() {
        return capacity;
    }
}
class Key implements Comparable{
    double score=0;
    Key(double score) {
        this.score=score;
    }
    @Override
    public int compareTo(Object o) {
        Key key=(Key)o;
        if(this.score-((Key) o).score==0) {
            return -1;
        }
        else {
            return (int)(this.score-((Key) o).score)*1000;
        }
    }
}
  • 實驗截圖

相關文章
相關標籤/搜索