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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

在控制台输入3个学生(姓名,学号)姓名可以重复但是学号是唯一的,将输入的这3个学生存放到集合里然后在控制台打印出来并且修改其中任意
一个学号对应的学生姓名并将被修改的学生信息以及修改后的学生信息存放到D:\\a.txt中并且以追加的方式
格式如下: 修改前:姓名-学号
修改后:姓名-学号

3 个回复

倒序浏览
  1. import java.io.FileWriter;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.util.HashMap;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. import java.util.Set;
  8. import java.util.Map.Entry;
  9. import java.util.Scanner;

  10. public class StudentTest {

  11.         public static void main(String[] args) {

  12.                 int i = 0;
  13.                 FileWriter fw = null; // 文件写变量
  14.                 String name = null; // 姓名
  15.                 String num = null; // 学号
  16.                 Scanner sin = new Scanner(System.in); // 建立Scanner构造器对象,读取键盘输出的数据
  17.                 Map<String, String> map = new HashMap<String, String>(); // 建立map映射集合

  18.                 for (i = 0; i < 3; i++) {
  19.                         String[] str = sin.next().split(","); // 通过split()方法将读入的字符串分为左右 2
  20.                                                                                                         // 部分(左右相对于逗号而言)
  21.                         name = str[0].substring(1); // 取部分左串(去左括号)
  22.                         num = str[1].substring(0, str[1].length() - 1); // 取部分右串(去右括号)
  23.                         map.put(num, name); // 加入map集合中
  24.                 }

  25.                 System.out.println("姓名-学号(修改前):"); // map.entrySet()返回Map.Entry实例化的对象集
  26.                 for (Entry<String, String> m : map.entrySet()) {
  27.                         System.out.println(m.getValue() + ":" + m.getKey());
  28.                 }

  29.                 try {
  30.                         String line = System.getProperty("line.separator"); // 平台独立的换行符
  31.                         StringBuffer str = new StringBuffer();
  32.                         fw = new FileWriter("D:\\a.txt", true);
  33.                         Set<?> set = map.entrySet(); // map.entrySet()返回Map.Entry实例化的对象集
  34.                         Iterator<?> iter = set.iterator(); // 建立针对实例化对象集的迭代器

  35.                         while (iter.hasNext()) { // 迭代操作
  36.                                 Map.Entry entry = (Map.Entry) iter.next();
  37.                                 str.append("修改前:" + entry.getValue() + "-" + entry.getKey())
  38.                                                 .append(line);
  39.                         }
  40.                         fw.write(str.toString()); // 写入文件

  41.                         fw.close(); // 关闭写入文件流
  42.                 } catch (IOException e) {
  43.                         e.printStackTrace();
  44.                 }

  45.                 // 完成修改操作
  46.                 System.out.println("输入要修改的学号:");
  47.                 num = sin.next();
  48.                 System.out.println("姓名修改为:");
  49.                 name = sin.next();
  50.                 map.put(num, name);

  51.                 // 输出修改后的结果
  52.                 System.out.println("姓名-学号(修改后):");
  53.                 for (Entry<String, String> m : map.entrySet()) {
  54.                         System.out.println(m.getValue() + ":" + m.getKey());
  55.                 }

  56.                 try {
  57.                         fw = new FileWriter("D:\\a.txt", true);
  58.                         PrintWriter pw = new PrintWriter(fw);
  59.                         Set<?> set = map.entrySet();
  60.                         Iterator<?> iter = set.iterator();
  61.                         while (iter.hasNext()) {
  62.                                 Map.Entry entry = (Map.Entry) iter.next();
  63.                                 pw.println("修改后:" + entry.getValue() + "-" + entry.getKey()); // 打印到指定的文件中
  64.                                 pw.flush(); // 刷新
  65.                         }
  66.                         pw.close(); // 关闭打印流
  67.                        
  68.                 } catch (IOException e) {
  69.                         e.printStackTrace();
  70.                 }

  71.         }
  72. }
复制代码


仅仅是实现了功能,代码的编写可能有些乱,如果有问题,可以留言
祝好运!
回复 使用道具 举报
ImKing 发表于 2016-7-5 00:50
仅仅是实现了功能,代码的编写可能有些乱,如果有问题,可以留言
祝好运!  ...

谢谢大神!
回复 使用道具 举报
{:2_36:},告诉你个秘密,我不是大神哦
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马