程序设计第一题
时间:2019-02-19
本文章向大家介绍程序设计第一题,主要包括程序设计第一题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
student.java
import java.util.ArrayList;
public class student {
private String stu_id; //学生id
private String stu_name; //学生姓名
private ArrayList<course> courses; //课程
public student(String stu_id,String stu_name,ArrayList<course> courses) {
// TODO Auto-generated constructor stub
this.courses=courses;
this.stu_id=stu_id;
this.stu_name=stu_name;
}
public ArrayList<course> getCourses() {
return courses;
}
public String getStu_id() {
return stu_id;
}
public String getStu_name() {
return stu_name;
}
public void setCourses(ArrayList<course> courses) {
this.courses = courses;
}
public void setStu_id(String stu_id) {
this.stu_id = stu_id;
}
public void setStu_name(String stu_name) {
this.stu_name = stu_name;
}
}
course.java
public class course {
private String courseName;//课程名
private int score; //分数
course(String courseName,int score){
this.courseName=courseName;
this.score=score;
}
public String getCourseName() {
return courseName;
}
public int getScore() {
return score;
}
public void setCourseName(String courseName) {
this.courseName = courseName;
}
public void setScore(int score) {
this.score = score;
}
}
Main.java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class Main {
private static ArrayList<String> readFile(String filename){
//设置返回结果
ArrayList<String> result=new ArrayList<>();
/* 读取文件*/
try {
BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(new File(filename))));
String lineTxt = null;
while ((lineTxt = br.readLine()) != null) {
result.add(lineTxt);
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("姓名:" );
return result;
}
//将信息写入xml文件
private static void writeFile(Map<String,student> m,String filename){
//创建文档
Document document=new Document();
//创建根元素,即students标签
Element students=new Element("s1tudents");
//根元素加入到document中
document.addContent(students);
Element student;
for(String s:m.keySet()){//map.keySet()获取map全部的key值
//创建学生标签
student=new Element("s2tudent");
//创建学号标签并加入到学生标签内
Element e_stuid=new Element("学号");
e_stuid.setText(m.get(s).getStu_id());
student.addContent(e_stuid);
//创建姓名标签并加入到学生标签内
Element e_stuname=new Element("姓名");
e_stuname.setText(m.get(s).getStu_name());
student.addContent(e_stuname);
//循环创建课程标签并加入到学生标签内
for(course c:m.get(s).getCourses()){
Element e_course=new Element("课程");
e_course.setAttribute("课程名",c.getCourseName());//在e_course对象中加入名为课程名的属性并附值为c.getCourseName()的值
e_course.setText(c.getScore()+"");//<姓名>张三</姓名> 就是填中间的那个名字
student.addContent(e_course);//把上面那句话显示出来
}
//将单个学生标签加入到根标签
students.addContent(student);
}
//设置xml输出格式
Format format = Format.getPrettyFormat();
// format.setEncoding("utf-8");//设置编码
//format.setIndent(" ");//设置缩进
//得到xml输出流
XMLOutputter out = new XMLOutputter(format);
//把数据输出到xml中
try {
out.output(document, new FileOutputStream(filename));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//用来测试输出map
private static void showMap(Map<String,student> m){
for(String s:m.keySet()){
System.out.println(m.get(s).getStu_id()+" "+m.get(s).getStu_name()+" ");
for(course c:m.get(s).getCourses()){
System.out.println(c.getCourseName()+" "+c.getScore());
}
System.out.println("---------------------");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
//读取文件获取字符数组
ArrayList<String> strs=readFile("D:\\test.txt");
//因为要对学号进行降序排序,并且一个学生id对应学生类,使用Trrmap存储信息,java中TreeMap元素之间是有序的
Map<String, student> students=new TreeMap<>(new Comparator<String>() {
//自定义比较器,TreeMap默认为升序
@Override
public int compare(String o1, String o2) {
// TODO Auto-generated method stub
//降序
return o2.compareTo(o1);
}
});
//定义字符数组
String []info;
//学生学号
String stu_id;
System.out.println( strs.size());
for(int i=0;i<strs.size();i++){
info=strs.get(i).split(",");//根据逗号进行字符串分割信息
stu_id=info[0];//获取学号
System.out.println( "i="+i+" "+strs.size());
if(!students.containsKey(stu_id)){//containKey 判断Map集合对象中是否包含指定的键名
//如果map中还未有学号,创建学生对象
student newstu=new student(stu_id, info[1], new ArrayList<course>());
//课程数组加入课程
newstu.getCourses().add(new course(info[2], Integer.parseInt(info[3])));//Integer.parseInt()方法将一个字符串转换成int型
//加入到map
students.put(stu_id, newstu);
}
else{
//如果map中已有对象则加入对应学生的课程中即可
students.get(stu_id).getCourses().add(new course(info[2], Integer.parseInt(info[3])));
}
}
//showMap(students);
//写入xml文件
writeFile(students, "D:\\output.xml");
}
}
- Contact Manager Web API 示例[1]CRUD 操作
- 3个域名交易:fde.com11万被秒
- 新手指南OpenStack:Nova的基础知识
- Python-装饰器详解
- Contact Manager Web API 示例[2] Web API Routing
- Android一些关于分辨率和布局的设置
- log4net 中错误 System.Web.HttpException (0x80004005): 文件不存在
- Contact Manager Web API 示例[2] Web API Routing
- Python内置函数
- NET实现微信公共平台上传下载多媒体文件
- css3基础知识——回顾
- Contact Manager Web API 示例[3] 分页和查询(Paging and Querying)
- @font-face css3自定义个性化字体
- 你不知道的javaScript笔记(7)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Hacking with iOS: SwiftUI Edition - 愿望清单项目(二)
- C#设备处理类操作
- x509数字证书导入-然后删除自身
- winform总结4> 工欲善其事,必先利其器之xml校验
- 如何利用SNMP实现网络攻击缓解?
- winform总结5> winform程序开发注意事项
- mvc文件上传支持批量上传,拖拽以及预览,文件内容校验
- .net Core 1.0.1 下的Web框架的的搭建过程step by step
- 蓝牙芯片----BK34341开发笔记------快速入门(2)
- .net core版 文件上传/ 支持批量上传,拖拽以及预览,bootstrap fileinput上传文件
- 蓝牙芯片----BK3431开发笔记------基本外部驱动应用(3)
- .net core 利用中间件处理常见的网站功能 包括 session、routers、重定向、重写和文件下载
- 蓝牙芯片----BK3431开发笔记------RW stack中添加自定义服务教程(4)
- 图像简单处理
- 蓝牙---BLE GATT介绍