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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 橘子果酱 于 2015-11-20 00:09 编辑

需求:
*    有五个学生,每个学生有3门课(语文、数学、英语)的成绩,写一个程序接收从键盘输入学生的信息,
*                 输入格式为:name,30,30,30(姓名,三门课成绩),
*                       然后把输入的学生信息按总分从高到低的顺序写入到一个名称"stu.txt"文件中。
*         要求:stu.txt文件的格式要比较直观,打开这个文件,就可以很清楚的看到学生的信息。
*
* 分析:
* 创建 学生类
*                 成员变量:姓名,语文成绩,数学成绩,英语成绩,总成绩
*                 成员方法:空参,有参,有参构造中传入姓名,语文成绩,数学成绩,英语成绩      
* 创建键盘录入对象
* 输入格式为:name,30,30,30
* 创建TreeSet集合,传入比较器
* 如果录入的小于5就储存在集合中
* 将录入的字符串切割成字符串数组从逗号开始切割,后面的转换为int类型
* 将转换后的结果封装成对象添加到集合中
* 遍历集合

创建 学生类
  1. package com.bean;
  2. <span style="background-color: rgb(255, 255, 255);">//创建 学生类</span>
  3. public class Student {
  4.         private String name;
  5.         private int chinese;
  6.         private int math;
  7.         private int english;
  8.         private int sum;
  9.        
  10.         public Student(){}
  11.        
  12.         public Student(String name, int chinese, int math, int english){
  13.                 super();
  14.                 this.name = name;
  15.                 this.chinese = chinese;
  16.                 this.math = math;
  17.                 this.english = english;
  18.                 this.sum = this.chinese + this.math + this.english;
  19.         }
  20.        
  21.         public int getSum(){
  22.                 return sum;
  23.         }
  24.        
  25.         public String toString(){
  26.                 return name+","+chinese+","+math+","+english+",总成绩:"+sum;
  27.                
  28.         }
  29.        
  30.        
  31. }
复制代码

  1. package com.heima;

  2. import java.io.BufferedWriter;
  3. import java.io.FileOutputStream;
  4. import java.io.FileWriter;
  5. import java.io.IOException;
  6. import java.util.Comparator;
  7. import java.util.Scanner;
  8. import java.util.TreeSet;
  9. import com.bean.Student;

  10. /*
  11. * 创建键盘录入对象
  12. * 输入格式为:name,30,30,30
  13. * 创建TreeSet集合,传入比较器
  14. * 如果录入的小于5就储存在集合中
  15. * 将录入的字符串切割成字符串数组从逗号开始切割,后面的转换为int类型
  16. * 将转换后的结果封装成对象添加到集合中
  17. * 遍历集合
  18. */
  19. public class Demo_ReaderStudent {

  20.         public static void main(String[] args) throws IOException {
  21.                 getMassage();
  22.         }
  23.         
  24.         public static void getMassage() throws IOException{
  25.                 Scanner sc = new Scanner(System.in);
  26.                 System.out.println("请输入学生信息,输入格式为:name,30,30,30");
  27.                 TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>(){                        
  28.                         public int compare(Student s1, Student s2) {
  29.                                 int num = s1.getSum() - s2.getSum();                        
  30.                                 return num == 0? 1 :num;
  31.          }               
  32.                 });
  33.                 while(ts.size()<1){
  34.                         String line = sc.nextLine();
  35.                         String[] arr;
  36.                         int chinese;
  37.                         int math;
  38.                         int english;
  39.                         try {
  40.                                 arr = line.split("\\,");
  41.                                 chinese = Integer.parseInt(arr[1]);
  42.                                 math = Integer.parseInt(arr[2]);
  43.                                 english = Integer.parseInt(arr[3]);
  44.                                 ts.add(new Student(arr[0],chinese,math,english));
  45.                         } catch (NumberFormatException e) {
  46.                                 System.out.println("录入格式错误,请重新录入。。。。");        
  47.           }
  48.                 }
  49.                 BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));
  50.                 for(Student s : ts){
  51.                         bw.write(s.toString());
  52.                         bw.newLine();
  53.                 }
  54.                 bw.close();        
  55.              }
  56. }
复制代码






25 个回复

倒序浏览

回帖奖励 +1

感觉在哪里见过这样一个题!!! 是在哪里呢? ............
回复 使用道具 举报
wx_YXxWrUwd 来自手机 中级黑马 2015-11-20 00:48:24
藤椅

回帖奖励 +1

集合还没学到啊 提前过过眼瘾 哈哈
回复 使用道具 举报
paulchoi1 来自手机 中级黑马 2015-11-20 00:48:31
板凳

回帖奖励 +1

这个是集合题是吧!
回复 使用道具 举报
学习Set集合的课程上有这道练习题
回复 使用道具 举报
Io学的不错,向你学习
回复 使用道具 举报
算是很综合的问题了,考了正则,集合和IO~学霸~给你三十二个赞~

点评

然不是学霸 学渣一枚..............  发表于 2015-11-22 19:36
回复 使用道具 举报

回帖奖励 +1

还没有学到  先收藏了 总会用到
回复 使用道具 举报
ln0491 中级黑马 2015-11-20 09:00:43
9#
学习了。。。。。。。。。。。
回复 使用道具 举报
yubail 中级黑马 2015-11-20 10:26:04
10#
谢谢分享
回复 使用道具 举报
看完之后,觉得学的还是不行,还得练啊。。
回复 使用道具 举报
赞,厉害!!!
回复 使用道具 举报
过来学习一下~
回复 使用道具 举报
我应该知道你来自哪里,不过用到集合和io了,牛
回复 使用道具 举报
大神  请带我飞吧

点评

不是大神............  发表于 2015-11-22 19:37
回复 使用道具 举报
对于面向对象又学了一遍
回复 使用道具 举报
学习一下  思路总理不清
回复 使用道具 举报
用集合做的  
回复 使用道具 举报 0 1
zypt0218 发表于 2015-11-20 00:37
感觉在哪里见过这样一个题!!! 是在哪里呢? ............

在java基础第17天 第19小题   老师讲的 但是没用加io流
回复 使用道具 举报
package com.itheima.eaxm;

import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Comparator;
import java.util.Scanner;
import java.util.TreeSet;

public class Result {

        /**
         * @param args
         * @throws IOException
         */
        public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
       Scanner sc = new Scanner(System.in);
       System.out.println("请输入 姓名,语文,数学,英语");
       TreeSet<Student> studentSet = new TreeSet<Student>(new Comparator<Student>() {

                @Override
                public int compare(Student s1, Student s2) {
                        // TODO Auto-generated method stub
                        int num = s2.getSum()-s1.getSum();
                        return num==0  ? 1 : num;
                }
              
        });
       while(studentSet.size()<5){
              
                 int china = 0;
                 int math =0;
                 int english =0 ;
             try{
                     String line = sc.nextLine();
                 String[] arr = line.split(",");
                  china = Integer.parseInt(arr[1]);
                  math = Integer.parseInt(arr[2]);
                  english = Integer.parseInt(arr[3]);
             
               int sum = china+math+english;          
               studentSet.add(new Student(arr[0],china,math,english, sum));
          }catch (Exception e) {
                        // TODO: handle exception
                  throw new RuntimeException("录入格式或字符串错误");
                }
       }  
       System.out.println();
       BufferedWriter bw = new BufferedWriter(new FileWriter("stu.txt"));
          for(Student stu : studentSet){
                  bw.write(stu.toString());
                  bw.newLine();
          }
          bw.close();
            
        }

}
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马