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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

asdf344180788

初级黑马

  • 黑马币:12

  • 帖子:5

  • 精华:0

© asdf344180788 初级黑马   /  2015-11-10 23:48  /  7608 人查看  /  29 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

5黑马币
入学考试题好难,感觉还要再多学学才行。。
有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个
名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。


最好要详细注释的答案,谢谢了~~

29 个回复

倒序浏览

        public static void main(String[] args){
                Student stu;
                Scanner scan;
                //定义一个List集合用于只存放Student对象
                List<Student> list = new ArrayList<Student>();
                //通过for循环表示要输入5个学生的信息
               
                for(int i=1;i<=5;i++){
                        //总成绩
                        int total=0;
                        //每循环一次就创建一个Student对象
                        stu = new Student();
                        System.out.println("请输入第"+i+"个学生的姓名及成绩:");
                        System.out.print("姓名:");
                        //通过for循环来分别获得一个Student对象的4个成员信息
                       
                        for(int j=0;j<4;j++){
                                //创建一个Scanner对象来获取键盘录入的值
                                scan =new Scanner(System.in);
                                //通过Scanner类中的nextLine()方法获得此次键盘录入的值
                                String field =scan.nextLine();
                               
                                //将键盘录入的值对号入座
                                if(j==0){
                                        stu.setName("姓名:"+field);
                                        System.out.print("语文:");
                                }
                                if(j==1){
                                        //将成绩加入到总成绩中
                                        total += Integer.valueOf(field);
                                        stu.setCscore("语文:"+field);
                                        System.out.print("数学:");
                                }
                                if(j==2){
                                        total += Integer.valueOf(field);
                                        stu.setMscore("数学:"+field);
                                        System.out.print("英语:");
                                }
                                if(j==3){
                                        total += Integer.valueOf(field);
                                        stu.setEscore("英语:"+field);
                                }
                        }
                       
                        stu.setTotal(total);
                        //将Student对象存入list集合中
                        list.add(stu);
                        //每输入完一个学生的信息就打印一此此学生的信息
                        System.out.println(stu.getName()+"   "+stu.getCscore()+"   "+
                                        stu.getMscore()+"   "+stu.getEscore()+"   总分:"+stu.getTotal());
                }
               
                //通过自定义的sortList()方法对List集合进行按照总成绩排序
                sortList(list);
                try {
                        //通过自定义的savaList()方法将List集合通过io流存入到classpath下stu.txt文件中
                        savaList(list);
                } catch (Exception e) {
                        //捕获自定义方法中抛出的异常
                        e.printStackTrace();
                }
        }

        private static void savaList(List<Student> list) throws Exception {
                //通过BufferedWriter类以字符流的方式进行写操作
                BufferedWriter out =
                                new BufferedWriter(new OutputStreamWriter(new FileOutputStream(new File("stu.txt"))));
                //利用增强for循环来遍历List集合
                for(Student stu :list){
                        out.append(stu.getName()+"   ");
                        out.append(stu.getCscore()+"   ");
                        out.append(stu.getMscore()+"   ");
                        out.append(stu.getEscore()+"   ");       
                        out.append("总分:"+stu.getTotal());
                        //每写完一个学生的信息就换行
                        out.newLine();
                }
                //对缓冲区刷新后才能成功写入
                out.flush();
                //最后关闭输出流
                out.close();
        }

        private static void sortList(List<Student> list) {
                //传入的list集合的大小。即总长度
                int len =list.size();
                Student temp;
                //冒泡排序
                for(int i=0;i<len-1;i++){
                        for(int j=i+1;j<len;j++){
                                //每一个list代表一个Student对象,通过getTotal()获得每一个学生的总成绩然后进行比较
                                if(list.get(i).getTotal()<list.get(j).getTotal()){
                                        temp=list.get(j);
                                        //将角标第i个学生对象与角标第j个学生对象对调
                                        list.set(j, list.get(i));
                                        list.set(i, temp);
                                }
                        }
                       
                }       
        }       
}

//声明一个Student类,用于存储键盘录入的姓名和成绩
class Student{
        //姓名
        String name;
        //语文成绩
        String cscore;
        //数学成绩
        String mscore;
        //英语成绩
        String escore;
        //总成绩
        int total;
       
        //各成员对应的get()和set()方法
        public int getTotal() {
                return total;
        }
        public void setTotal(int total) {
                this.total = total;
        }
        public String getName() {
                return name;
        }
        public void setName(String name) {
                this.name = name;
        }
        public String getCscore() {
                return cscore;
        }
        public void setCscore(String cscore) {
                this.cscore = cscore;
        }
        public String getMscore() {
                return mscore;
        }
        public void setMscore(String mscore) {
                this.mscore = mscore;
        }
        public String getEscore() {
                return escore;
        }
        public void setEscore(String escore) {
                this.escore = escore;
        }       



还可以把 ,正好也是我考到了这道题,加油咯。。
回复 使用道具 举报
赵年为 来自手机 中级黑马 2015-11-11 01:27:56
藤椅
啊啊啊?入学考试题这么这么难?我没考,直接进的诶。
回复 使用道具 举报
赵年为 发表于 2015-11-11 01:27
啊啊啊?入学考试题这么这么难?我没考,直接进的诶。

你怎么直接进去的?
回复 使用道具 举报
  1. import java.io.*;

  2. class Demo
  3. {
  4.         public static void main(String[] args)
  5.         {
  6.                 System.out.println("请输入学生信息及3门课(语文,数学,英语)的成绩,输入格式如下:");
  7.                 System.out.println("张三,30,30,30"+"     ---- 中间用\',\'隔开!");
  8.                 //建立字符输入流,输出流对象
  9.                 BufferedReader buf=null;
  10.                 BufferedWriter buw=null;
  11.                 try{
  12.                         //通过System.in获取键盘录入,由于读取的是字符,通过转换流,将字节流转换成字符流
  13.                         buf=new BufferedReader(new InputStreamReader(System.in));
  14.                         //建立文件输出流,将学生信息输出文件。
  15.                         buw=new BufferedWriter(new FileWriter("D:\\stu.txt"));
  16.                         //将文件标题打印好
  17.                         buw.write("姓名\t\t"+"语文\t\t"+"数学\t\t"+"英语\t\t");
  18.                         //记得换行,要不就会在标题后面打印
  19.                         buw.newLine();
  20.                         String line=null;
  21.                         while((line=buf.readLine())!=null){
  22.                                 //通过分隔符,将键盘录入的信息分割。考虑到可能输入的是中文逗号或英文逗号,把这两种情况都写上
  23.                                 String[] suf=line.split(",|,");
  24.                                 //如果读取到over则退出循环,结束录入
  25.                                 if("over".equalsIgnoreCase(line))
  26.                                         break;
  27.                                 //如果分割后长度不为4,则没俺要求填写,进行提示。
  28.                                 else if (suf.length!=4)
  29.                                 {
  30.                                         System.out.println("请按照要求填写(学生,语文成绩,数学成绩,英语成绩  中间使用\',\'号隔开)");
  31.                                 }
  32.                                 //判断每科输入的分数是否在0-150分之间,如不符合,则分数输入错误,进行提示
  33.                                 else if(Integer.valueOf(suf[1])<0||Integer.valueOf(suf[1])>150||Integer.valueOf(suf[2])<0||
  34.                                         Integer.valueOf(suf[2])>150||Integer.valueOf(suf[3])<0||Integer.valueOf(suf[3])>150){
  35.                                        
  36.                                
  37.                                                 System.out.println("学生分数输入错误,请重新输入");
  38.                
  39.                                 }
  40.                                 //如果都满足则进行文件写入
  41.                                 else
  42.                                 {
  43.                                         //写入的时候将姓名和科目之间用tab分开。和表头保持一致。
  44.                                         buw.write(suf[0]+"\t\t"+suf[1]+"\t\t"+suf[2]+"\t\t"+suf[3]+"\t\t");
  45.                                         buw.newLine();
  46.                                         System.out.println("输入成功,请继续输入;如输入完毕请输入\"over\"");
  47.                                 }

  48.                         }
  49.                 }
  50.                 catch(IOException i){
  51.                         i.printStackTrace();
  52.                 }
  53.                 //关闭流
  54.                 finally{
  55.                         if(null!=buf){
  56.                                 try{
  57.                                         buf.close();
  58.                                 }
  59.                                 catch(IOException i){
  60.                                         i.printStackTrace();
  61.                                 }
  62.                         }
  63.                         if(null!=buw){
  64.                                 try{
  65.                                         buw.close();
  66.                                 }
  67.                                 catch(IOException i){
  68.                                         i.printStackTrace();
  69.                                 }
  70.                         }
  71.                 }
  72.         }
  73. }
复制代码

点评

牛逼  发表于 2015-11-22 00:25
666666666  发表于 2015-11-14 13:31
回复 使用道具 举报
#include<stdio.h>
#include<stdlib.h>
struct student
{ int num;
  int math;
  int english;
  int c;
  int sum;
  int average;
};
void main()
{struct student s[10];
int i;
void sum( student s[]);
void average(student s[]);
void sort(student s[]);
void print(student s[]);
void search(student s[]);

for(i=0;i<10;i++)
{
printf("请输入%d个学生的信息-------学号------数学成绩------英语成绩-----c语言成绩\n",i+1);
     scanf("%d,%d,%d,%d",&s[i].num,&s[i].math,&s[i].english,&s[i].c);
  }
sum(s);
average(s);
sort(s);
search(s);
print(s);
system("pause");//我用的是vs2010编译器,楼主用别的话改下这条
}
void sum( student s[])
{ int i;

for(i=0;i<10;i++)
s[i].sum=s[i].math+s[i].english+s[i].c;
}
void average(student s[])
{
int i;

for(i=0;i<10;i++)
s[i].average=(s[i].math+s[i].english+s[i].c)/3;
}
void sort(student s[])

{
  int i,j,k;
  struct student temp;
  for(i=0;i<10;i++)
   {   k=i;
  for(j=i+1;j<10;j++)
if(s[k].sum<s[j].sum)
k=j;
    if(k!=i)
   {temp=s[i];
    s[i]=s[k];
s[k]=temp;
   }
}
}
void search(student s[])
{int mid,low,high,found;
low=0;
high=9;
found=0;
while(low<=high)
{mid=(high+low)/2;
  if(s[mid].average==85){found=1;break;}
  else if(85>s[mid].average)
high=mid-1;
  else low=mid+1;

}
if(found==1)
printf("平均分为85分的学生序号为%d\n",s[mid].num);
else printf("平均分为85分的学生不存在\n");
}
void print(student s[])
{int i;
printf("学号--数学成绩---英语成绩---c语言课程设计成绩---平均分---总分\n");
for(i=0;i<10;i++)

printf("%-4d%5d%5d%5d%5d%5d\n",s[i].num,s[i].math,s[i].english,s[i].c,s[i].average,s[i].sum);
}

点评

用的是C语言吗  发表于 2015-11-22 00:28
回复 使用道具 举报
#include <iostream>
#include <stdlib.h>
#include <string.h>

struct student
{
char number[20];
char name[20];
int score[3];
} str[5];

void main()
{
float aver(int *);
struct student *p;
p=str;
int i,j;
for(i=0;i<5;i++) //read
{
printf("number:");
gets(p->number);
printf("name:");
gets(p->name);
for (j=0;j<3;j++)
switch(j)
{
       case 0:printf("Mathematics:"); scanf("%d",&p->score[0]);break;
       case 1:printf("C Program:"); scanf("%d",&p->score[1]);break;
       case 2:printf("English:"); scanf("%d",&p->score[2]);break;
}
getchar(); //接收scanf()结束时的回车
p++;
printf("\n");
}

FILE *fp;
char filename[5]={"stud"};
if((fp=fopen(filename,"w"))==NULL)
{printf("Can't open the %s\n",filename);
exit(0);
}
p=str;   //必须重新初始化指针p
for(i=0;i<5;i++)// puts
{
fprintf(fp,"number:");
fputs(p->number,fp);
fprintf(fp,"\nname:");
fputs(p->name,fp);
for (j=0;j<3;j++)
switch(j)
{
       case 0:fprintf(fp,"\nMathematics:%d",p->score[0]);break;
       case 1:fprintf(fp,"\nC Program:%d",p->score[1]);break;
       case 2:fprintf(fp,"\nEnglish:%d",p->score[2]);break;
}
fprintf(fp,"\nAverage:%f\n\n",aver(p->score));  //%d改为%f
p++;

}
fclose(fp);
}

float aver(int *a)
{
int i=0;
float sum=0;  //初始化为0
for (;i<3;i++)
{
sum+=(int)(*a);
a++;
}
return sum/3;
}
回复 使用道具 举报
+icer+ 中级黑马 2015-11-11 21:19:51
8#
我就看看,不多话
回复 使用道具 举报
大牛们都熬厉害。
回复 使用道具 举报
dsap 中级黑马 2015-11-11 22:31:33
10#
这入学考试好复杂
回复 使用道具 举报
这是哪个校区的题啊,有水平,明天有空了给你弄
回复 使用道具 举报
确实挺难的  不过 你学了一点知识后 就会感觉很简单
回复 使用道具 举报
传说中的先天优势!
回复 使用道具 举报
这个题好像我以前大学期间的一道期末考试题  就是想不起来了 哈哈
回复 使用道具 举报
import java.io.*;
public class Prog50{
        //定义学生模型
        String[] number = new String[5];
        String[] name = new String[5];
        float[][] grade = new float[5][3];
        float[] sum = new float[5];
        public static void main(String[] args) throws Exception{
                Prog50 stud = new Prog50();
                stud.input();
                stud.output();
        }
        //输入学号、姓名、成绩
        void input() throws IOException{
                BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
                //录入状态标识
                boolean isRecord = true;
                while(isRecord){
                        try{
                          for(int i=0;i<5;i++){
                                  System.out.print("请输入学号:");
                                  number[i] = br.readLine();
                                  System.out.print("请输入姓名:");
                                  name[i] = br.readLine();
                                  for(int j=0;j<3;j++){
                                          System.out.print("请输入第"+(j+1)+"门课成绩:");
                                          grade[i][j] = Integer.parseInt(br.readLine());
                                  }
                                  System.out.println();
                                  sum[i] = grade[i][0]+grade[i][1]+grade[i][2];
                          }
                            isRecord = false;
                    }catch(NumberFormatException e){
                             System.out.println("请输入一个数字!");
                  }
                }
        }
        //输出文件
        void output() throws IOException{
                FileWriter fw = new FileWriter("E://java50//stud.txt");
                BufferedWriter bw = new BufferedWriter(fw);       
                bw.write("No.  "+"Name  "+"grade1  "+"grade2  "+"grade3  "+"average");
                bw.newLine();
                for(int i=0;i<5;i++){
                  bw.write(number[i]);
                  bw.write("  "+name[i]);
                  for(int j=0;j<3;j++)
                    bw.write("  "+grade[i][j]);
                  bw.write("  "+(sum[i]/5));
                  bw.newLine();
                }
                bw.close();
        }
}
回复 使用道具 举报
package com.itheima.Test2;

/*
* @author sabrina
*/
/*
*
*/
class Student implements Comparable<Student> {
        private String name;
        private int langScore;
        private int mathScore;
        private int EnlishScore;
        private int sum;
        public Student() {
        }
       
        public Student(String name, int langScore, int mathScore,
                        int englishScore) {

                this.name = name;
                this.langScore = langScore;
                this.mathScore = mathScore;
                this.EnlishScore = englishScore;
                sum = langScore+mathScore+englishScore;
        }
       


        public String getName() {
                return name;
        }


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


        public int getLangScore() {
                return langScore;
        }


        public void setLangScore(int langScore) {
                this.langScore = langScore;
        }


        public int getMathScore() {
                return mathScore;
        }


        public void setMathScore(int mathScore) {
                this.mathScore = mathScore;
        }


        public int getEnlishScore() {
                return EnlishScore;
        }


        public void setEnlishScore(int enlishScore) {
                EnlishScore = enlishScore;
        }

        public int getSum() {
                return sum;
        }


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

        @Override
        public int compareTo(Student stu) {//重写方法
                int i=  new Integer(this.sum).compareTo(
                                new Integer(stu.sum));
                if(i==0){
                        return this.name.compareTo(stu.name);
                }               
                return i ;
        }

        @Override
        public String toString() {
                return "Student [name=" + name + ", langScore=" + langScore
                                + ", mathScore=" + mathScore + ", EnlishScore=" + EnlishScore
                                + ", sum=" + sum + "]";
        }

}
package com.itheima.Test2;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
/*
* 2、 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,
* 写一个程序接收从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,三门课成绩),
* 然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
* 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
*/
public class Test2 {

        public static void main(String[] args) throws IOException {
                Comparator<Student> com = Collections.reverseOrder(); //自定义一个比较器
               
                File f = new File("d:/stu.txt");
               
                Set<Student> se = StudnetIn(com);//强比较器传入以及排序,返回集合
               
                ToFile(se,f);

        }
       
       
        public static void ToFile(Set<Student> se, File f) throws IOException {
                Iterator<Student> it = se.iterator();
               
                FileWriter fw = new FileWriter(f);
                while(it.hasNext()){
                        Student s = it.next();
                        fw.write(s.toString()+s.getSum()+"\t"+"\r\n");
                }
                fw.close();
        }


        public static Set<Student> StudnetIn(Comparator<Student> com) {
                Scanner s = new Scanner(System.in);
                Set<Student> se = null;
                se = new TreeSet<Student>(com);//构造TreeSet的时候就选择了
               
               
                while(true){
                        String msg = s.nextLine();
                        if(msg.equals("over")){
                                System.out.println("输入结束!");
                                break;
                        }else{
                                String []str = msg.split(",");
                                se.add(new Student(str[0],Integer.parseInt(str[1]),Integer.parseInt(str[2]),Integer.parseInt(str[3])));
                               
                        }
                }
               
               
                return se;
        }
}

点评

我学习了  发表于 2015-11-22 00:30
回复 使用道具 举报
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.Scanner;

public class Student
{
    double chinese;
    double math;
    double english;
    double sum;
    String sname;

    public Student ( double chinese, double math, double english, double sum, String sname )
    {
        this.chinese = chinese;
        this.math = math;
        this.english = english;
        this.sum = sum;
        this.sname = sname;
    }

    @Override
    public String toString ()
    {
        return String.format ("%s\t\t%2$.1f\t\t\t%3$.1f\t\t\t%4$.1f\t\t\t%5$.1f", sname, chinese, math, english, sum);
    }

    public static void main ( String[] args )
    {
        Scanner scanner = new Scanner (System.in);
        LinkedList<Student> list = new LinkedList<Student> ();
        System.out.println ("从键盘输入学生的信息,输入格式为:name,30,30,30(姓名,<a  target="_blank" class="baidu-highlight">三门</a>课成绩)<直接回车结束>");
        while (scanner.hasNextLine ())
        {
            String line = scanner.nextLine ().trim ();
            if ("".equals (line))
            {
                break;
            }
            String[] info = line.split ("\\,");
            String name = info[0];
            double chinese = 0;
            double math = 0;
            double english = 0;
            double sum = 0;
            try
            {
                chinese = Double.parseDouble (info[1]);
                math = Double.parseDouble (info[2]);
                english = Double.parseDouble (info[3]);
                sum = chinese + math + english;
            }
            catch (Exception e)
            {
                System.out.println ("格式不正确,重写输入:");
                continue;
            }
            Student student = new Student (chinese, math, english, sum, name);
            list.add (student);
        }
        scanner.close ();
        Collections.sort (list, new Comparator<Student> ()
        {
            @Override
            public int compare ( Student o1, Student o2 )
            {
                if (o1.sum > o2.sum)
                {
                    return -1;
                }
                else if (o1.sum < o2.sum)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
        });
        try
        {
            String file = "stu.txt";
            String line = System.getProperty ("line.separator");
            FileWriter fw = new FileWriter (file, true);
            FileReader fr = new FileReader (file);
            if (fr.read () == -1)
            {
                fw.write ("姓名\t\t语文\t\t数学\t\t<a  target="_blank" class="baidu-highlight">英语</a>\t\t总分" + line);
            }
            fr.close ();
            for ( Student student : list )
            {
                fw.write (student.toString () + line);
                fw.flush ();
            }
            fw.close ();
            System.out.println ("加入完毕.");
        }
        catch (IOException e)
        {}
    }
}
回复 使用道具 举报
  1. import java.io.BufferedWriter;
  2. import java.io.FileWriter;
  3. import java.io.IOException;
  4. import java.util.Comparator;
  5. import java.util.Scanner;
  6. import java.util.TreeSet;


  7. public class A {

  8.         /**思路:1、将输入的学生信息放入TreeSet
  9.          *     2、让TreeSet自身带比较器
  10.          * @param args
  11.          * @throws IOException
  12.          */
  13.         public static void main(String[] args) throws IOException {
  14.                 //键盘输入
  15.                 Scanner sc=new Scanner(System.in);
  16.                 //定义TreeSet,传比较器
  17.                 TreeSet<String> al=new TreeSet<String>(new Com());
  18.                 //输入学生信息
  19.                 String s=null;
  20.                 while(sc.hasNext()){
  21.                         s=sc.next();
  22.                         if("end".equals(s))
  23.                                 break;
  24.                         al.add(s);
  25.                 }
  26.                 //把信息存入“stu1.txt”
  27.                 BufferedWriter bw=new BufferedWriter(new FileWriter("stu1.txt"));
  28.                 for(String s1:al){
  29.                         bw.write(s1);
  30.                         bw.newLine();
  31.                 }
  32.                 bw.close();
  33.         }
  34. }


  35. //比较器
  36. class Com implements Comparator<String>{
  37.         @Override
  38.         public int compare(String s1, String s2) {
  39.                 //将一条学生信息,用“、”分开
  40.                 String[] ss1=s1.split(",");
  41.                 //得到成绩之和
  42.                 int sum1=new Integer(ss1[1])+new Integer(ss1[2])+new Integer(ss1[3]);
  43.                 String[] ss2=s2.split(",");
  44.                 int sum2=new Integer(ss2[1])+new Integer(ss2[2])+new Integer(ss2[3]);
  45.                 //如果成绩相同,用学生名比较
  46.                 if(sum1==sum2)
  47.                         return ss1[0].compareTo(ss2[0]);       
  48.                 return sum1-sum2;
  49.         }
  50. }
复制代码
回复 使用道具 举报
  1. /**
  2. * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  3. * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
  4. * 要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  5. */

  6. /**
  7. * 1.先录入信息;
  8. * 2.进行排序;
  9. * 3.输出到文件中。
  10. */
  11. package com.itheima.problem;

  12. import  java.io.*;
  13. import  java.util.*;


  14. class Student  implements Comparable<Object>{
  15.          String studentName;
  16.          float  chineseReport;
  17.          float  mathReport;
  18.          float  englishReport;
  19.          float  sumScore;
  20.    
  21.         public Student() {         
  22.        
  23.         }
  24.        
  25.         public static Student  StudentFactory(String s){
  26.                 System.out.println(s);
  27.                 String[] data;
  28.                 Student sd = new Student();
  29.         data = s.split(",");
  30.         
  31.         for(int i=0;i<data.length;i++){
  32.                 System.out.println(data[i]);
  33.         }
  34.         
  35.         sd.studentName = data[0];
  36.         sd.chineseReport = Float.parseFloat(data[1]);
  37.         sd.mathReport = Float.parseFloat(data[2]);
  38.             sd.englishReport = Float.parseFloat(data[3]);
  39.             sd.sumScore = Float.parseFloat(data[1])
  40.                             +Float.parseFloat(data[2])+
  41.                             Float.parseFloat(data[3]);
  42.            
  43.             return sd;
  44.         }
  45.        
  46.         @Override
  47.         public String toString() {
  48.                 return studentName + " " + chineseReport + " "
  49.                                 + mathReport + " " + englishReport + " " + sumScore;
  50.         }
  51.        
  52.         public int compareTo(Object o)
  53.         {      
  54.            if(!(o instanceof Student))
  55.                    throw new RuntimeException("不是学生对象");
  56.           
  57.            Student s = (Student)o;
  58.            if(this.sumScore<s.sumScore){
  59.                    return 1;   
  60.            }   
  61.            else if(this.sumScore==s.sumScore)
  62.            {
  63.                    return this.studentName.compareTo(s.studentName);
  64.            }
  65.           
  66.            return -1;
  67.         }
  68. }

  69. public  class  Test1{
  70.         public static void main(String[] args)
  71.                         throws IOException {
  72.                 String dataInfor ;
  73.                 Student sd;
  74.                 List<Student>   stuArray =  new  ArrayList<Student>();
  75.                
  76.                 //Input Datas
  77.             System.out.println("请输入学生成绩格式是:姓名,语文成绩,数学成绩,英语成绩:");
  78.         while(true){
  79.                     BufferedReader bd = new BufferedReader(new InputStreamReader(System.in));
  80.                     if((dataInfor = bd.readLine())!=null)        {
  81.                             if(dataInfor.equals("end")){
  82.                                     System.out.println("End Input!");
  83.                                     break;
  84.                             }   
  85.                     }
  86.                     
  87.                     sd = Student.StudentFactory(dataInfor);
  88.                     System.out.println(sd);
  89.                     stuArray.add(sd);  
  90.         }
  91.         
  92.         //sort
  93.         Collections.sort(stuArray);
  94.         System.out.println(stuArray);

  95.         //output file
  96.             PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("stu.txt")));
  97.             ListIterator< Student> it = stuArray.listIterator();
  98.             while(it.hasNext()){
  99.                     pw.println(it.next());
  100.             }
  101.             pw.close();
  102.         }
  103. }
复制代码
回复 使用道具 举报
赵年为 发表于 2015-11-11 01:27
啊啊啊?入学考试题这么这么难?我没考,直接进的诶。

不是吧,不用考试直接进啊
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马