黑马程序员技术交流社区
标题:
那位大神会做这道题,求指点
[打印本页]
作者:
a15868412325
时间:
2016-7-4 20:29
标题:
那位大神会做这道题,求指点
在控制台输入3个学生(姓名,学号)姓名可以重复但是学号是唯一的,将输入的这3个学生存放到集合里然后在控制台打印出来并且修改其中任意
一个学号对应的学生姓名并将被修改的学生信息以及修改后的学生信息存放到D:\\a.txt中并且以追加的方式
格式如下: 修改前:姓名-学号
修改后:姓名-学号
作者:
ImKing
时间:
2016-7-5 00:50
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
int i = 0;
FileWriter fw = null; // 文件写变量
String name = null; // 姓名
String num = null; // 学号
Scanner sin = new Scanner(System.in); // 建立Scanner构造器对象,读取键盘输出的数据
Map<String, String> map = new HashMap<String, String>(); // 建立map映射集合
for (i = 0; i < 3; i++) {
String[] str = sin.next().split(","); // 通过split()方法将读入的字符串分为左右 2
// 部分(左右相对于逗号而言)
name = str[0].substring(1); // 取部分左串(去左括号)
num = str[1].substring(0, str[1].length() - 1); // 取部分右串(去右括号)
map.put(num, name); // 加入map集合中
}
System.out.println("姓名-学号(修改前):"); // map.entrySet()返回Map.Entry实例化的对象集
for (Entry<String, String> m : map.entrySet()) {
System.out.println(m.getValue() + ":" + m.getKey());
}
try {
String line = System.getProperty("line.separator"); // 平台独立的换行符
StringBuffer str = new StringBuffer();
fw = new FileWriter("D:\\a.txt", true);
Set<?> set = map.entrySet(); // map.entrySet()返回Map.Entry实例化的对象集
Iterator<?> iter = set.iterator(); // 建立针对实例化对象集的迭代器
while (iter.hasNext()) { // 迭代操作
Map.Entry entry = (Map.Entry) iter.next();
str.append("修改前:" + entry.getValue() + "-" + entry.getKey())
.append(line);
}
fw.write(str.toString()); // 写入文件
fw.close(); // 关闭写入文件流
} catch (IOException e) {
e.printStackTrace();
}
// 完成修改操作
System.out.println("输入要修改的学号:");
num = sin.next();
System.out.println("姓名修改为:");
name = sin.next();
map.put(num, name);
// 输出修改后的结果
System.out.println("姓名-学号(修改后):");
for (Entry<String, String> m : map.entrySet()) {
System.out.println(m.getValue() + ":" + m.getKey());
}
try {
fw = new FileWriter("D:\\a.txt", true);
PrintWriter pw = new PrintWriter(fw);
Set<?> set = map.entrySet();
Iterator<?> iter = set.iterator();
while (iter.hasNext()) {
Map.Entry entry = (Map.Entry) iter.next();
pw.println("修改后:" + entry.getValue() + "-" + entry.getKey()); // 打印到指定的文件中
pw.flush(); // 刷新
}
pw.close(); // 关闭打印流
} catch (IOException e) {
e.printStackTrace();
}
}
}
复制代码
仅仅是实现了功能,代码的编写可能有些乱,如果有问题,可以留言
祝好运!
作者:
a15868412325
时间:
2016-7-5 07:39
ImKing 发表于 2016-7-5 00:50
仅仅是实现了功能,代码的编写可能有些乱,如果有问题,可以留言
祝好运! ...
谢谢大神!
作者:
ImKing
时间:
2016-7-5 09:33
{:2_36:},告诉你个秘密,我不是大神哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2