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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© noiary 高级黑马   /  2014-11-20 21:51  /  954 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 noiary 于 2014-11-21 13:33 编辑

整个晚上都在写这个,还没看比老师的答案,勉强写出来,
目测没多少参考价值。小伙伴们见笑啦{:3_50:}

总分没有进行排序,熬不动了,碎觉!





  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileWriter;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;

  7. /*
  8. 有五个学生,每个学生有3门课的成绩,
  9. 从键盘输入以上数据(包括姓名,三门课成绩),
  10. 输入的格式:如:zhagnsan,30,40,60计算出总成绩,
  11. 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。

  12. 思路:
  13. 1.创建学生对象Student
  14. 2.建立键盘录入流 ,对录入数据进行缓存
  15. 3.创建文件写入流
  16. */
  17. public class StudentInfoTest {

  18.         public static void main(String[] args) throws IOException {
  19.                 // TODO Auto-generated method stub
  20.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  21.                 BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(System.out));
  22.                 String line = null;
  23.                 int count = 0;
  24.                 while((line = bufr.readLine()) != null) {
  25.                         //结束语句 over
  26.                         if(line.equals("over"))
  27.                                 break;
  28.                         
  29.                         //检测输入合适是否正确
  30.                         String[] strArr = parseLine(line);
  31.                         if(strArr.length == 0)
  32.                                 continue;
  33.                         /*写入文件*/
  34.                         writeFile(strArr);
  35.                         bufw.write(line);
  36.                         bufw.newLine();
  37.                         bufw.flush();
  38.                         
  39.                         if(++count == 5) {
  40.                                 System.out.println("输入完毕,程序结束。");
  41.                                 break;
  42.                         }
  43.                 }
  44.                
  45.                 bufr.close();
  46.                 bufw.close();
  47.         }
  48.         
  49.         @SuppressWarnings("unused")
  50.         private static String[] parseLine(String line) {
  51.                 String[] falshArr = new String[0];
  52.                 String[] strArray = line.split(",");
  53.                 if(strArray.length == 1) {
  54.                         strArray = line.split(",");
  55.                         if (strArray.length == 1)
  56.                                 System.out.println("请输入正确格式:如zhagnsan,30,40,60");
  57.                                 return falshArr;
  58.                 }
  59.                
  60.                 if(strArray.length == 4 && strArray[0] instanceof String) {
  61.                         for(int i=1; i<4; i++) {
  62.                                 try {
  63.                                         Integer.parseInt(strArray[i]);
  64.                                 }
  65.                                 catch (NumberFormatException e) {
  66.                                         System.out.println("请输入正确成绩:如zhagnsan,30,40,60");
  67.                                         return falshArr;
  68.                                 }
  69.                         }
  70.                         
  71.                         return strArray;
  72.                 }
  73.                 return falshArr;
  74.         }
  75.         
  76.         public static void writeFile(String[] strArr) throws IOException {
  77.                 String name = strArr[0];
  78.                 int classResult1 = Integer.parseInt(strArr[1]);
  79.                 int classResult2 = Integer.parseInt(strArr[2]);
  80.                 int classResult3 = Integer.parseInt(strArr[3]);
  81.                 Student stu = new Student(name, classResult1, classResult2, classResult3);
  82.                 BufferedWriter bufw = new BufferedWriter(new FileWriter("stud.txt",true));
  83.                 bufw.write(stu.getName() + " :\t" + stu.getTotalResult());
  84.                 bufw.newLine();
  85.                 bufw.close();
  86.         }

  87. }


  88. /*创建学生对象*/
  89. class Student {
  90.         
  91.         private String name;
  92.         private int classResult1;
  93.         private int classResult2;
  94.         private int classResult3;
  95.         
  96.         Student(String name, int cr1, int cr2, int cr3) {
  97.                 this.name = name;
  98.                 this.classResult1 = cr1;
  99.                 this.classResult2 = cr2;
  100.                 this.classResult3 = cr3;
  101.         }
  102.         
  103.         /*获取总成绩*/
  104.         public int getTotalResult() {
  105.                 return this.classResult1 + this.classResult2 + this.classResult3;
  106.         }
  107.         
  108.         /*获取姓名*/
  109.         public String getName() {
  110.                 return this.name;
  111.         }
  112. }
复制代码



2 个回复

正序浏览
一坨屎也是屎壳郎的宝贝。有价值。
回复 使用道具 举报
看完视频觉得自己写得是一坨屎 - -。


  1. //package day21_IOStream;

  2. /*
  3. 有五个学生,每个学生有3门课的成绩,
  4. 从键盘输入以上数据(包括姓名,三门课成绩),
  5. 输入的格式:如:zhagnsan,30,40,60计算出总成绩,
  6. 并把学生的信息和计算出的总分数高低顺序存放在磁盘文件"stud.txt"中。

  7. 思路:
  8. 1.创建学生对象Student
  9. 2.建立键盘录入流 ,对录入数据进行缓存
  10. 3.创建文件写入流
  11. */

  12. import java.io.BufferedReader;
  13. import java.io.BufferedWriter;
  14. import java.io.File;
  15. import java.io.FileWriter;
  16. import java.io.IOException;
  17. import java.io.InputStreamReader;
  18. import java.util.Set;
  19. import java.util.TreeSet;

  20. public class StudentInfoTest {

  21.         public static void main(String[] args) throws IOException {
  22.                 // TODO Auto-generated method stub
  23.                 Set<Student> stus = StudentInfoTool.getStudents();

  24.                 StudentInfoTool.writeToFile(stus);
  25.         }
  26. }

  27. /* 学生工具类 */
  28. class StudentInfoTool {
  29.         public static Set<Student> getStudents() throws IOException {

  30.                 Set<Student> stuSet = new TreeSet<Student>();

  31.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(
  32.                                 System.in));

  33.                 String line = null;
  34.                 while ((line = bufr.readLine()) != null) {
  35.                         if (line.equals("over"))
  36.                                 break;
  37.                         String[] strs = parseLine(line);
  38.                         /* 格式不正确 */
  39.                         if (strs == null) {
  40.                                 System.out.println("请输入正确成绩:如zhagnsan,30,40,60");
  41.                                 continue;
  42.                         }

  43.                         Student stu = new Student(strs[0], Integer.parseInt(strs[1]),
  44.                                         Integer.parseInt(strs[2]), Integer.parseInt(strs[2]));

  45.                         stuSet.add(stu);
  46.                 }
  47.                 return stuSet;

  48.         }

  49.         public static void writeToFile(Set<Student> stus) throws IOException {
  50.                 File file = new File("stu.txt");
  51.                 BufferedWriter bufw = new BufferedWriter(new FileWriter(file, true));
  52.                 for (Student s : stus) {
  53.                         bufw.write(s + "\t");
  54.                         bufw.write(s.getSum() + "");
  55.                         bufw.newLine();
  56.                         bufw.flush();
  57.                 }
  58.                 bufw.close();
  59.         }

  60.         private static String[] parseLine(String line) {
  61.                 String[] strArray = line.split(",");
  62.                 if (strArray.length == 1) {
  63.                         strArray = line.split(",");
  64.                         if (strArray.length == 1)
  65.                                 return null;
  66.                 }

  67.                 if (strArray.length == 4 && strArray[0] instanceof String) {
  68.                         for (int i = 1; i < 4; i++) {
  69.                                 try {
  70.                                         Integer.parseInt(strArray[i]);
  71.                                 } catch (NumberFormatException e) {
  72.                                         return null;
  73.                                 }
  74.                         }

  75.                         return strArray;
  76.                 }
  77.                 return null;
  78.         }
  79. }

  80. /* 创建学生对象 */
  81. class Student implements Comparable<Student> {

  82.         private String name;

  83.         /* 三门成绩及总分 */
  84.         private int cr1, cr2, cr3, sum;

  85.         Student(String name, int cr1, int cr2, int cr3) {
  86.                 this.name = name;
  87.                 this.cr1 = cr1;
  88.                 this.cr2 = cr2;
  89.                 this.cr3 = cr3;
  90.                 sum = cr1 + cr2 + cr3;
  91.         }

  92.         /* 排序 */
  93.         public int compareTo(Student s) {
  94.                 int num = new Integer(s.sum).compareTo(sum);
  95.                 if (num == 0)
  96.                         return name.compareTo(s.name);
  97.                 return num;
  98.         }

  99.         /* 获取总成绩 */
  100.         public int getSum() {
  101.                 return sum;
  102.         }

  103.         /* 获取姓名 */
  104.         public String getName() {
  105.                 return this.name;
  106.         }

  107.         public boolean equals(Object obj) {
  108.                 if (!(obj instanceof Student))
  109.                         return false;
  110.                 Student stu = (Student) obj;

  111.                 return name.equals(stu.name) && cr1 == stu.cr1 && cr2 == stu.cr2
  112.                                 && cr3 == stu.cr3;
  113.         }

  114.         public int hashCode() {
  115.                 return name.hashCode() + sum * 42;
  116.         }

  117.         public String toString() {
  118.                 return "student[" + name + ", " + cr1 + ", " + cr2 + ", " + cr3 + "]";
  119.         }
  120. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马