Java集合类和输入输出

一、 实验目的

1、掌握Collection接口,List集合,Set集合,Map集合

2、掌握输入/输出流、File类、文件输入/输出流、带缓存的输入/输出流、数据输入/输出流

二、实验内容与要求

1、完成以下代码

(1)定义一个学生类Student,包括:

成员变量:no:学号 //字符型,由9位数字字符构成,格式为:年+班+学号

name:姓名 //字符型,

sex:性别 //字符型

math:数学成绩 //float

java:java成绩 //float

english:英语成绩//float

mean:平均分数//float

成员方法:无参数构造方法 Student();

​ 有参数构造方法Student(String no,String name,boolean sex,float math,float java,float english);

​ 设置除mean外的其他成员变量的方法:setNo(String no);setSex(String sex);setMath(float math);setJava(float java);setEnglish(float english)

​ 获取成员变量的方法:getNo(); getSex(); getMath(); getJave(); getEnglish(); getMean();

​ 重写equals方法,依据学号判断是否相等,实现compareTo()方法,依据学号判断大小。

(2)编写个Test类,在主方法中实现以下功能:

1)生成n个student对象,用ArrayList或者LinkedList对象存放n个学生对象。

2)查找学号为“201708003”的学生,找到后从表中删除该学生。

3)利用ArrayList或者LinkedList对象对n个学生对象分别按照数学,英语,java,mean排序,并输出排序结果。

4)按照学号对n个学生对象排序,提取学号从“201708004”到“201708009”的学生对象构成新表,输出新表。

5)删除平均分没有达到60分的学生对象,输出删除后的结果。

2、编程程序将下面这首诗写入文件poem.txt中:

​ 登鹳雀楼

【唐】 李 白

白日依山尽,黄河入海流。

欲穷千里目,更上一层楼。

3、从poem.txt中读入诗句,

将“李 白”修改为“王之涣”,然后存入文件mpoem.txt中。

三、实验结果

1.

package shijian61;

import java.util.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.stream.Collectors;

class students{
	String no; //字符型,由9位数字字符构成,格式为:年+班+学号
	String name;//字符型,
	String sex;  //字符型
	float math;//float
    float java; //float
    float english;	//float平均分数
    float mean;
    students(){
    	no="20170701";
    	name="wzd";
    	sex="nan";
    	math=98;
    	java=97;
    	english=96;
    	mean=(math+java+english)/3;
    }
    students(String no,String name,String sex,float math,float java,float english){
    	this.no=no;
    	this.name=name;
    	this.sex=sex;
    	this.math=math;
    	this.java=java;
    	this.english=english;
    	this.mean=(math+java+english)/3;
    }
    void setNo(String no){
    	this.no=no;
    }
    void setName(String name){
    	this.name=name;
    }
    void setSex(String sex){
    	this.sex=sex;
    }
    void setMath(float math){
    	this.math=math;
    }
    void setJava(float java){
    	this.java=java;
    }
    void setEnglish(float english){
    	this.english=english;
    }
    String getNo(){
    	return this.no;
    }
    String getSex(){
    	return this.sex;
    }
    float getMath(){
    	return this.math;
    }
    float getJave(){
    	return this.java;
    }
    float getEnglish(){
    	return this.english;
    }
    float getMean(){
    	return this.mean;
    }
    boolean equals(String no){
    	//重写equals方法,依据学号判断是否相等
    	if(this.no==no) {
    		return true;
    	}
		return false;
    }
} 
public class shijian61 {
	@SuppressWarnings({ "rawtypes", "unchecked" })
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		//生成n个student对象,用ArrayList或者LinkedList对象存放n个学生对象。
		//list<students>list=new ArrayList<>();
		ArrayList ls = new ArrayList();
		students[] s=new students[4];
		for( int i=0;i <4;i++ ) { //给数组增加10个Int元素
			s[i]=new students();
			ls.add(s[i]);
		}
		/*
		for(int i = 0;i<2;i++) {
			System.out.println(s[i].no+s[i].name);
		}*/
		//修改原有初始化数据
		for(int i = 0;i<4;i++) {
			System.out.println("第"+(i+1)+"个学生");
			@SuppressWarnings("resource")
			Scanner sc = new Scanner(System.in); 
	        System.out.print("no="); 
	        String no = sc.nextLine(); 
	        System.out.print("name="); 
	        String name = sc.nextLine();
	        System.out.print("sex="); 
	        String sex = sc.nextLine();
	        System.out.print("math="); 
	        float math = sc.nextFloat();
	        System.out.print("java="); 
	        float java = sc.nextFloat();
	        System.out.print("english="); 
	        float english = sc.nextFloat();
	        s[i].setNo(no);
	        s[i].setName(name);
	        s[i].setSex(sex);
	        s[i].setMath(math);
	        s[i].setJava(java);
	        s[i].setEnglish(english);  
		}
	    //查找学号为“201708003”的学生,找到后从表中删除该学生。
		@SuppressWarnings("resource")
		Scanner sc = new Scanner(System.in); 
        System.out.print("移除的学号为no="); 
        String a = sc.nextLine(); 
		for(int i = 0;i<4;i++) {
			if(s[i].getNo().equals(a)) {
				ls.remove(i);
			}
		}
		System.out.println("学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
			System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+s[i].no+"java="+s[i].java+"  "+"english="+s[i].english+"  "+"math="+s[i].math);
		}
		/*
		for(int i = 0;i<ls.size();i++) {
		    students t = (students)ls.get(i);
		    System.out.println("name:"+t.name+"age:"+t.no);
		}
		for(int i = 0;i<3;i++) {
			System.out.println(s[i].no+s[i].name);
		}
		*/
		//利用ArrayList或者LinkedList对象对n个学生对象分别按照数学,英语,java,mean排序,并输出排序结果。
		students b=new students();
		//java
		for(int i = 0;i<ls.size()-1;i++) {
			int index=i;
			for(int j = i+1;j<ls.size();j++) {
				if(s[index].java>s[j].java) {
					b=s[index];
					s[index]=s[j];
					s[j]=b;
				}
			}
		}
	    //扩展代码串:输出Java成绩排序
		System.out.println("按java排序学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
			System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+s[i].no+"java="+s[i].java+"  "+"english="+s[i].english+"  "+"math="+s[i].math);
		}
		//math
		for(int i = 0;i<ls.size()-1;i++) {
			int index=i;
			for(int j = i+1;j<ls.size();j++) {
				if(s[index].math>s[j].math) {
					b=s[index];
					s[index]=s[j];
					s[j]=b;
				}
			}
		}
	    //扩展代码串:输出math成绩排序
		System.out.println("按math排序学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
			System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+s[i].no+"java="+s[i].java+"  "+"english="+s[i].english+"  "+"math="+s[i].math);
		}
		//english
		for(int i = 0;i<ls.size()-1;i++) {
			int index=i;
			for(int j = i+1;j<ls.size();j++) {
				if(s[index].english>s[j].english) {
					b=s[index];
					s[index]=s[j];
					s[j]=b;
				}
			}
		}
	    //扩展代码串:输出english成绩排序
		System.out.println("按english排序学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
			System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+s[i].no+"java="+s[i].java+"  "+"english="+s[i].english+"  "+"math="+s[i].math);
		}
		//按照学号对n个学生对象排序
		for(int i = 0;i<ls.size()-1;i++) {
			int index=i;
			for(int j = i+1;j<ls.size();j++) {
				if(s[index].no.compareTo(s[j].no)!=0) {
					b=s[index];
					s[index]=s[j];
					s[j]=b;
				}
			}
		}
		System.out.println("按no排序学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
			System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+s[i].no+"java="+s[i].java+"  "+"english="+s[i].english+"  "+"math="+s[i].math);
		}
		//提取学号从“201708004”到“201708009”的学生对象构成新表,输出新表。
		ArrayList ls2 = new ArrayList();
		int c=0,d=0;
		@SuppressWarnings("resource")
		Scanner sc2 = new Scanner(System.in); 
        System.out.print("学号初始为no="); 
        String a2 = sc2.nextLine(); 
        System.out.print("学号结束为no="); 
        String a3 = sc2.nextLine();
		for(int i = 0;i<ls.size();i++) {
			if(s[i].getNo().equals(a2)) {
				c=i;
			}
			if(s[i].getNo().equals(a3)) {
				d=i;
			}
		}
		for( int i=c;i<=d;i++ ) { //给数组增加10个Int元素
			ls2.add(s[i]);
		}
		System.out.println("学生的成绩:");
		for(int i = 0;i<ls2.size();i++) {
		    @SuppressWarnings("unused")
			students t = (students)ls2.get(i);
		    System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+t.no+"java="+t.java+"  "+"english="+t.english+"  "+"math="+t.math);
		}
		//删除平均分没有达到60分的学生对象,输出删除后的结果。
		for(int i = 0;i<ls.size();i++) {
			if(s[i].mean<60) {
				ls.remove(i);
			}
		}
		System.out.println("平均分没有达到60分学生的成绩:");
		for(int i = 0;i<ls.size();i++) {
		    students t = (students)ls.get(i);
		    System.out.println("第"+(i+1)+"个学生的成绩   "+"no="+t.no+"java="+t.java+"  "+"english="+t.english+"  "+"math="+t.math);
		}	
	}
}

2.

package shijian62;
import java.io.*;

public class shijian62 {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		File file = new File("word.txt"); // 创建文件对象
		/*if (file.exists()) { // 如果该文件存在
		         file.delete(); // 将文件删除
		         System.out.println("文件已删除"); // 输出的提示信息
		} 
		else { // 如果文件不存在
			try { // try语句块捕捉可能出现的异常
				file.createNewFile(); // 创建该文件
				System.out.println("文件已创建"); // 输出的提示信息
		        }
			catch (Exception e) { // catch处理该异常
			   e.printStackTrace();
			   }// 输出异常信息
		}
		if (file.exists()) { // 如果文件存在
			String name = file.getName(); // 获取文件名称
			long length = file.length(); // 获取文件长度
			boolean hidden = file.isHidden(); // 判断文件是否是隐藏文件
			System.out.println("文件名称:" + name); // 输出信息
			System.out.println("文件长度是:" + length);
			System.out.println("该文件是隐藏文件吗?" + hidden);
			} 
		else { // 如果文件不存在
			System.out.println("该文件不存在"); // 输出信息
			}
		}*/
	
	//public void write(byte[] b,int off,int len) throws IOException  
	try { // 捕捉异常
		FileOutputStream out = new FileOutputStream(file);
		byte buy[] = "登鹳雀楼\r\n【唐】 李 白\r\n 白日依山尽,黄河入海流。 \r\n 欲穷千里目,更上一层楼。".getBytes();
		out.write(buy); // 将数组中信息写入到文件中
		out.close(); // 将流关闭
		} catch (Exception e) { // catch语句处理异常信息
		e.printStackTrace(); // 输出异常信息
		}
	try {
		FileInputStream in = new FileInputStream(file);
		byte byt[] = new byte[1024]; // 创建byte数组
		int len = in.read(byt); // 从文件中读取信息
		System.out.println("文件中的信息是:");
		System.out.println(new String(byt, 0, len));
		in.close(); // 关闭流
		} catch (Exception e) {
		e.printStackTrace(); // 输出异常信息
		}
	}
}

3.

package shijian63;

import java.io.*;

public class ahijian63 { // 创建类
public static void main(String args[]) throws IOException { // 主方法
// 定义字符串数组
			String content[] = { "登鹳雀楼", "【唐】 李 白", "白日依山尽,黄河入海流。 "," 欲穷千里目,更上一层楼。" };
			File file = new File("word.txt"); // 创建文件对象
			try {
			FileWriter fw = new FileWriter(file); // 创建FileWriter类对象
			// 创建BufferedWriter类对象
			BufferedWriter bufw = new BufferedWriter(fw); 
			for (int k = 0; k < content.length; k++) { // 循环遍历数组
			bufw.write(content[k]); // 将字符串数组中元素写入到磁盘文件中
			bufw.newLine(); // 将数组中的单个元素以单行的形式写入文件
			}
			bufw.close(); // 将BufferedWriter流关闭
			fw.close(); // 将FileWriter流关闭
			} catch (Exception e) { // 处理异常
			e.printStackTrace();
			}
			try {
			FileReader fr = new FileReader(file); // 创建FileReader类对象
			// 创建BufferedReader类对象
			BufferedReader bufr = new BufferedReader(fr);
			String s = null; // 创建字符串对象
			@SuppressWarnings("unused")
			int i = 0; // 声明int型变量
			// 如果文件的文本行数不为null,则进入循环
			while ((s = bufr.readLine()) != null) { 
			i++; // 将变量做自增运算
			System.out.println(s); // 输出文件数据
			}
			bufr.close(); // 将FileReader流关闭
			fr.close(); // 将FileReader流关闭
			} catch (Exception e) { // 处理异常
			e.printStackTrace();
			}
			FileInputStream in = new FileInputStream(file);
			byte byt[] = new byte[1024]; // 创建byte数组
			int len = in.read(byt); // 从文件中读取信息
			byt[17]='王';byt[18]='之';byt[19]='焕';
			System.out.println("文件中的信息是:");
			System.out.println(new String(byt, 0, len));
			in.close(); // 关闭流
	  }
}
posted @ 2026-01-06 21:55  东血  阅读(6)  评论(0)    收藏  举报

载入天数...载入时分秒...