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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

asdf344180788

初级黑马

  • 黑马币:12

  • 帖子:5

  • 精华:0

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

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


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

29 个回复

正序浏览
lixy 中级黑马 2015-12-15 22:41:48
25#
那么多大神都粘出代码,我就不献丑了。楼主好好学学啊
回复 使用道具 举报
Mykey 中级黑马 2015-12-14 22:15:20
24#
这么牛逼吗,我考了,可是没这么难啊,.
回复 使用道具 举报
路过,看大牛的。。
回复 使用道具 举报
  1. package exp;

  2. import java.io.File;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.math.BigDecimal;
  6. import java.util.ArrayList;
  7. import java.util.Scanner;

  8. /**
  9. *
  10. * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  11. * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个
  12. * 名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  13. *
  14. * @author VisionDo
  15. *
  16. */
  17. public class StudentScoreInf {

  18.         private static final int MAX = 5;//学生总数
  19.         private static final String FilePath = "stu.txt";//文件名
  20.        
  21.         private static ArrayList<Student> StuArray;//保存学生对象的数组
  22.        
  23.        
  24.        
  25.         public StudentScoreInf(){
  26.                 StuArray = new ArrayList<Student>();
  27.         }
  28.        
  29.        
  30.         public static void main(String[] args) {
  31.                
  32.                 StudentScoreInf ssi = new StudentScoreInf();
  33.                 ssi.InitialStudentInf();
  34.                 try {
  35.                         SortStu(StuArray);//对录入的学生信息按总分排序
  36.                         WriteStuInf(StuArray);//将学生信息写入文件
  37.                 } catch (IOException e) {
  38.                         System.out.println("文件写入失败");
  39.                 }
  40.                
  41.         }
  42.        
  43.         //初始化学生信息
  44.         private void InitialStudentInf(){
  45.                
  46.                 System.out.println("请输入学生的信息:");
  47.                 System.out.println("--------------------------------------");
  48.                 System.out.println("输入格式为:name,30,30,30(语文、数学、英语)");
  49.                 System.out.println("--------------------------------------");
  50.                
  51.                 Scanner sc = new Scanner(System.in);
  52.                 String inf = "";
  53.             int flag = 0;
  54.                 while(flag < MAX ){
  55.                         inf = sc.next();
  56.                         if(IsRight(inf)){
  57.                                 flag++;
  58.                         }else
  59.                                 System.out.println("数据有误,请重新输入:");       
  60.                 }
  61.                
  62.         }
  63.        
  64.         //将用户录入的学生信息,写入指定文件内
  65.         private static void WriteStuInf(ArrayList<Student> inf) throws IOException{
  66.                
  67.                 File file = new File(FilePath);

  68.                 if(!file.exists())
  69.                         file.createNewFile();//如果文件不存在,创建新文件
  70.                 else{
  71.                         FileWriter fw = new FileWriter(file,false);
  72.                         fw.write("");//如果文件已经存在,清空文件
  73.                         fw.close();
  74.                 }
  75.                
  76.                 FileWriter fw = new FileWriter(file,true);//以追加的方式写入
  77.                
  78.                 StringBuffer title = new StringBuffer();
  79.                
  80.                 //制作表头
  81.                 title.append("\t\t学生成绩表");
  82.                 title.append("\r\n------------------------------------------\r\n");
  83.                 title.append("姓名\t语文\t数学\t英语\t总分\t\r\n");
  84.                 fw.write(title.toString());
  85.                 title.delete(0, title.length());//清空
  86.                 //写入信息
  87.                 for(Student s:inf){
  88.                         title.append("\r\n");
  89.                         title.append(s.getName()+"\t");
  90.                         title.append(s.getChinese()+"\t");
  91.                         title.append(s.getMath()+"\t");
  92.                         title.append(s.getEnglish()+"\t");
  93.                         title.append(s.getTotalScore()+"\t\t");
  94.                         title.append("\r\n");
  95.                         fw.write(title.toString());
  96.                         title.delete(0, title.length());//清空
  97.                 }
  98.                
  99.                 fw.close();
  100.                 System.out.println("学生成绩登记完毕!");               
  101.         }
  102.        
  103.        
  104.         /**
  105.          *
  106.          * @param str 用户输入的学生信息
  107.          * @return  录入的信息是否正确
  108.          */
  109.         private boolean IsRight(String str){
  110.                
  111.                 boolean flag =str.trim().isEmpty()?false:true;//判断是否为空
  112.                 Object[] StuInf = str.split(",");
  113.                 flag = StuInf.length<4?false:true;//判断数据是否齐全
  114.                
  115.                 if(flag){
  116.                         int i =1;
  117.                         double score = 0.0;
  118.                         while(i<StuInf.length){
  119.                                 score = Double.valueOf((String) StuInf[i]);//得到单科成绩
  120.                                 if(score<0 || score >100)
  121.                                         return false;
  122.                                 else
  123.                                         i++;
  124.                         }
  125.                         //while循环执行完成后,如果当前循环变量i的值大于4
  126.                    //学生的单条信息,按逗号切割后,数组大小为4
  127.                         if(i >= StuInf.length){
  128.                                 flag = true;
  129.                        
  130.                                 score = 0.0;//计算总分
  131.                                 for(int j =1;j<StuInf.length;j++){
  132.                                         score += Double.valueOf((String)StuInf[j]);
  133.                                 }
  134.                                
  135.                                 String name = (String)StuInf[0];//姓名
  136.                                 double chinese = Double.valueOf((String)StuInf[1]);//语文成绩
  137.                                 double math = Double.valueOf((String)StuInf[2]);//数学成绩
  138.                                 double english = Double.valueOf((String)StuInf[3]);//英语成绩
  139.                                
  140.                                 //对总分保留两位小数
  141.                                 BigDecimal bd = new BigDecimal(score);
  142.                                 score = bd.setScale(1, BigDecimal.ROUND_HALF_UP).doubleValue();
  143.                                
  144.                                 //实例化对应的学生
  145.                                 Student stu = new Student(name,chinese,math,english,score);
  146.                                 StuArray.add(stu);
  147.                                 return true;
  148.                         }
  149.                                
  150.                         else
  151.                                 flag = false;
  152.                        
  153.                         return flag;
  154.                 }else
  155.                         return flag;
  156.                
  157.         }
  158.        
  159.         /*
  160.          * 将学生按总分由高到低排序
  161.          *
  162.          */
  163.         private static void SortStu(ArrayList<Student> stu){
  164.                 Student temp;
  165.                 for(int i = 0; i< stu.size()-1; i++){
  166.                         for(int j =i+ 1; j<stu.size();j++){
  167.                                 if(stu.get(i).getTotalScore() < stu.get(j).getTotalScore()){
  168.                                         temp = stu.get(j);
  169.                                         stu.set(j,stu.get(i));
  170.                                         stu.set(i, temp);
  171.                                 }
  172.                                
  173.                         }
  174.                 }
  175.         }
  176.        
  177.        
  178.         //学生对象
  179.         class Student{
  180.                 String name;
  181.                 double chinese;
  182.                 double math;
  183.                 double english;
  184.                 double TotalScore = 0.0;
  185.                
  186.                 public Student(){}
  187.                
  188.                 public Student(String name,double chinese,double math,double english,double TotalScore){
  189.                         this.name = name;
  190.                         this.chinese = chinese;
  191.                         this.math = math;
  192.                         this.english = english;
  193.                         this.TotalScore = TotalScore;
  194.                 }
  195.                
  196.                
  197.                 public String getName() {
  198.                         return name;
  199.                 }

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

  203.                 public double getChinese() {
  204.                         return chinese;
  205.                 }

  206.                 public void setChinese(double chinese) {
  207.                         this.chinese = chinese;
  208.                 }

  209.                 public double getMath() {
  210.                         return math;
  211.                 }

  212.                 public void setMath(double math) {
  213.                         this.math = math;
  214.                 }

  215.                 public double getEnglish() {
  216.                         return english;
  217.                 }

  218.                 public void setEnglish(double english) {
  219.                         this.english = english;
  220.                 }

  221.                 public double getTotalScore() {
  222.                         return TotalScore;
  223.                 }

  224.                 public void setTotalScore(double totalScore) {
  225.                         TotalScore = totalScore;
  226.                 }
  227.                
  228.                
  229.                
  230.         }
  231.        

  232. }
复制代码
回复 使用道具 举报
import java.io.*;
import java.util.*;
public class lianxi50 {
public static void main(String[] args){
   Scanner ss = new Scanner(System.in);
   String [][] a = new String[5][6];
   for(int i=1; i<6; i++) {
    System.out.print("请输入第"+i+"个学生的学号:");
    a[i-1][0] = ss.nextLine();
    System.out.print("请输入第"+i+"个学生的姓名:");
    a[i-1][1] = ss.nextLine();
    for(int j=1; j<4; j++) {
       System.out.print("请输入该学生的第"+j+"个成绩:");
       a[i-1][j+1] = ss.nextLine();
       }
System.out.println("\n");
   }
//以下计算平均分
float avg;
int sum;
for(int i=0; i<5; i++) {
sum=0;
   for(int j=2; j<5; j++) {
   sum=sum+ Integer.parseInt(a[i][j]);
      }
   avg= (float)sum/3;
   a[i][5]=String.valueOf(avg);
}
//以下写磁盘文件
String s1;
try {
    File f = new File("C:\\stud");
    if(f.exists()){
      System.out.println("文件存在");
      }else{
         System.out.println("文件不存在,正在创建文件");
          f.createNewFile();//不存在则创建
        }
BufferedWriter output = new BufferedWriter(new FileWriter(f));
for(int i=0; i<5; i++) {
for(int j=0; j<6; j++) {
   s1=a[i][j]+"\r\n";
   output.write(s1);   
    }
}
output.close();
System.out.println("数据已写入c盘文件stud中!");
   } catch (Exception e) {
     e.printStackTrace();
     }
}
}





import java.util.Arrays;
import java.util.Random;

/*
回复 使用道具 举报
Weidan 中级黑马 2015-11-28 21:01:26
20#
给你个看起来简单点的,打印出来的效果是这样的:
望采纳啊亲

  1. package cn.liweidan.test1;

  2. import java.io.BufferedOutputStream;
  3. import java.io.File;
  4. import java.io.FileDescriptor;
  5. import java.io.FileOutputStream;
  6. import java.io.PrintStream;
  7. import java.util.ArrayList;
  8. import java.util.Collections;
  9. import java.util.Comparator;
  10. import java.util.List;

  11. /**
  12. * 有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
  13. * 输入格式为:name,30,30,30(姓名,三门课成绩),然后把输入的学生信息按总分从高到低的顺序写入到一个
  14. * 名称"stu.txt"文件中。要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
  15. *
  16. * @author Weidan
  17. *
  18. */
  19. public class Demo02 {

  20.         public static void main(String[] args) throws Exception {
  21.                 // 重定向
  22.                 System.setOut(new PrintStream(new BufferedOutputStream(
  23.                                 new FileOutputStream(new File("stu.txt"))), true)); // 设置输出到文件,true表示输出后自动刷新
  24.                 System.out.println("姓名\t语文\t数学\t英语\t总分");
  25.                 // 创建容器
  26.                 List<Student> list = new ArrayList<Student>();
  27.                 // 创建对象
  28.                 Student s1 = new Student("张三", 90, 80, 75);
  29.                 Student s2 = new Student("李四", 95, 100, 75);
  30.                 Student s3 = new Student("王五", 70, 85, 89);
  31.                 // 分别添加到容器当中去
  32.                 list.add(s1);
  33.                 list.add(s2);
  34.                 list.add(s3);
  35.                 // 进行排序
  36.                 Collections.sort(list, new score());
  37.                 // 遍历输出学生信息
  38.                 for (Student student : list) {
  39.                         System.out.println(student.toString());
  40.                 }
  41.                 // 把输出还原为控制台
  42.                 System.setOut(new PrintStream(new BufferedOutputStream(
  43.                                 new FileOutputStream(FileDescriptor.out)), true));// 设置回到控制台
  44.                 System.out.println("程序运行结束");

  45.         }

  46. }

  47. class Student {
  48.         private String name;
  49.         private int chineseSco;
  50.         private int mathSco;
  51.         private int englishSco;

  52.         public Student() {

  53.         }

  54.         public Student(String name, int chineseSco, int mathSco, int englishSco) {
  55.                 super();
  56.                 this.name = name;
  57.                 this.chineseSco = chineseSco;
  58.                 this.mathSco = mathSco;
  59.                 this.englishSco = englishSco;
  60.         }

  61.         public String getName() {
  62.                 return name;
  63.         }

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

  67.         public int getChineseSco() {
  68.                 return chineseSco;
  69.         }

  70.         public void setChineseSco(int chineseSco) {
  71.                 this.chineseSco = chineseSco;
  72.         }

  73.         public int getMathSco() {
  74.                 return mathSco;
  75.         }

  76.         public void setMathSco(int mathSco) {
  77.                 this.mathSco = mathSco;
  78.         }

  79.         public int getEnglishSco() {
  80.                 return englishSco;
  81.         }

  82.         public void setEnglishSco(int englishSco) {
  83.                 this.englishSco = englishSco;
  84.         }

  85.         //获得总分
  86.         public int getScore() {
  87.                 return chineseSco + mathSco + englishSco;
  88.         }

  89.         @Override
  90.         public String toString() {
  91.                 return name + "\t" + chineseSco + "\t" + mathSco + "\t" + englishSco
  92.                                 + "\t" + getScore();
  93.         }

  94. }

  95. /**
  96. * 业务排序类
  97. * @author Weidan
  98. *
  99. */
  100. class score implements Comparator<Student> {

  101.         /**
  102.          * 如果s1的总分比s2少,返回1,表示s2排在前面
  103.          */
  104.         @Override
  105.         public int compare(Student s1, Student s2) {
  106.                 if (s1.getScore() - s2.getScore() < 0) {
  107.                         return 1;
  108.                 } else if (s1.getScore() - s2.getScore() == 0) {
  109.                         return 0;
  110.                 } else {
  111.                         return -1;
  112.                 }
  113.         }
  114. }
复制代码
回复 使用道具 举报
赵年为 发表于 2015-11-11 01:27
啊啊啊?入学考试题这么这么难?我没考,直接进的诶。

不是吧,不用考试直接进啊
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
  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. }
复制代码
回复 使用道具 举报
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)
        {}
    }
}
回复 使用道具 举报
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.*;
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();
        }
}
回复 使用道具 举报
这个题好像我以前大学期间的一道期末考试题  就是想不起来了 哈哈
回复 使用道具 举报
传说中的先天优势!
回复 使用道具 举报
确实挺难的  不过 你学了一点知识后 就会感觉很简单
回复 使用道具 举报
这是哪个校区的题啊,有水平,明天有空了给你弄
回复 使用道具 举报
dsap 中级黑马 2015-11-11 22:31:33
9#
这入学考试好复杂
回复 使用道具 举报
大牛们都熬厉害。
回复 使用道具 举报
+icer+ 中级黑马 2015-11-11 21:19:51
7#
我就看看,不多话
回复 使用道具 举报
#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;
}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马