⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 java-paiming.txt

📁 用于成绩排名
💻 TXT
字号:

从键盘输入若干学生的学号和JAVA课程的成绩.格式如下

01  87

02  90

03  60

然后按成绩排序. 并写入到文件 C:\java.txt

思路:

class javaScore { string studentno, float  score}

从 system.in 中读入数据,  每一行读入后生成一个 new javaScore, 存放到

一个List 中.

接下来解决排序问题,现在的问题是javaScore类如何排序如何比较大小呢?

在“集合框架”中有两种比较接口:Comparable接口和Comparator接口。像String和Integer等Java内建类实现 Comparable接口以提供一定排序方式,但这样只能实现该接口一次。对于那些没有实现Comparable接口的类、或者自定义的类,您可以通过 Comparator接口来定义您自己的比较方式。

利用Comparable接口创建您自己的类的排序顺序,只是实现compareTo()方法的问题。

若一个类不能用于实现java.lang.Comparable,或者您不喜欢缺省的Comparable行为并想提供自己的排序顺序(可能多种排序方式),你可以实现Comparator接口,从而定义一个比较器。
   (1)int compare(Object o1, Object o2): 对两个对象o1和o2进行比较,如果o1位于o2的前面,则返回负值,如果在排序顺序中认为o1和o2是相同的,返回0,如果o1位于o2的后面,则返回正值

   (2)boolean equals(Object obj): 指示对象obj是否和比较器相等。

  “该方法覆写Object的equals()方法,检查的是Comparator实现的等同性,不是处于比较状态下的对象。” 

好,看看我们用J2SE 1.4 写出来是什么样子

import java.io.*;
import java.util.*;

class javaScore implements Comparable {
    String sno;
    float score;
    public javaScore(String a,float b){
        sno = a;
        score = b;
    }
    public int compareTo(Object a){
        javaScore aJavaScore = (javaScore)a;
        if (score<aJavaScore.getScore()) return -1;
        else if (score>aJavaScore.getScore()) return 1;
        else return 0;
    }
    public float getScore() {
        return score;
    }
    public String getSno() {
        return sno;
    }
}

public class inputScore {
    public static void main(String[] args) throws Exception {
        System.out.println("开始输入记录");
        BufferedReader sbf = new BufferedReader(new InputStreamReader(System.in));
        String aline="";
        ArrayList scoreList = new ArrayList();
        do{    
            try{
                aline = sbf.readLine();
                if(!aline.equalsIgnoreCase("over")){
                    int blankPos = aline.indexOf(" ");
                    String sno = aline.substring(0,blankPos).trim();
                    float score = Float.parseFloat(aline.substring(blankPos).trim());
                    scoreList.add(new javaScore(sno,score));
                    System.out.println(sno + "--" + score);
                }
            }catch(Exception e){
                System.out.println("错误,重新输入该记录");
            }
        }while(!aline.equalsIgnoreCase("over"));
        java.util.Collections.sort(scoreList);
        
        FileOutputStream fos = new FileOutputStream("c:\\java.txt");
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(fos,"gb2312"));
        writer.write("学号\t成绩\r\n");
        ListIterator l = scoreList.listIterator();
        while (l.hasNext()){
            javaScore aL= (javaScore)(l.next());
            writer.write(aL.getSno() + "\t" + aL.getScore()+"\r\n");
        }
        writer.close();
        fos.close();
        System.out.println("存盘成功");
    }
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -