java字节流与字符流的应用与练习(InputStreamReader、BufferedReader、FileReader)

注:本文主要包含两个练习,适合初学者学习“数据流”时,练习使用。

1、输入一个成绩(用InputStreamReader和BufferedReader流实现成绩的输入),输出成绩的等级。等级划分标准:85分以上为优,75~84为良,65~74为中,55分以上为及格,55以下为不及格。(要求用switch语句)

涉及知识点:
字符输入流InputStreamReader的应用、缓冲区读者BufferedReader的应用、BufferedReader的readLine()方法、将字符串转换为整型的Integer.parseInt()方法、switch分支语句

源码:

import java.io.*;
public class RecordOut {
	public static void main(String[] args) throws IOException{
		//创建对象
		int record;
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);
		//输入成绩
		record = Integer.parseInt(br.readLine());
		//成绩等级判定
		switch ((record+5)/10) {
			case 10: 
			case 9:
				System.out.println("优");break;
			case 8:
				System.out.println("良");break;
			case 7:
				System.out.println("中");break;
			case 6:
				System.out.println("及格");break;
			default:
				System.out.println("不及格");break;
		}
		isr.close();
		br.close();
	}
}

该练习需注意事项:
使用switch进行判断时需注意:由于题目给出的是85、75……这类的数字,整除10判断时不方便,判断时我们可以将原成绩加上5然后在对10整除判断。

2、现有如下格式的成绩单score.txt:
姓名:张三,数学成绩88,英语成绩92。
姓名:李四,数学成绩67,英语成绩96。
姓名:王二,数学成绩92,英语成绩85。
程序在读取文件时,要求用户输入的密码是use123。密码正确程序读取score.txt并输出。一旦超过两次读入的密码不正确,程序立刻结束。(用InputStreamReader和BufferedReader流、FileReader流)

涉及知识点:
字符输入流InputStreamReader的应用、缓冲区读者BufferedReader的应用、BufferedReader的readLine()方法、文件读者FileReader的应用、System.in与System.exit(0)、判断两字符串内容是否相同的方法equals()、循环与分支语句的使用

源码:

import java.io.*;
public class RecordTable {
	public static void main(String[] args) throws IOException{
		int sum = 0;//统计密码错误次数
		System.out.println("请输入用户密码:");
		//读取用户输入的密码
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
		String psw =in.readLine();
		//循环判断
		while( !psw.equals("use123")) {
			sum++;
			if (sum < 2) {
				System.err.println("密码错误, 请重新输入:");
				psw = in.readLine();
			}else{
				System.out.println("两次密码错误,退出程序!");
				System.exit(0);
			}
		}
		//输出文件
		String str;
		FileReader fr = new FileReader("lib/score.txt");
		BufferedReader bf = new BufferedReader(fr);
		while ((str = bf.readLine()) != null) {
			System.out.println(str);
		}
		fr.close();
		bf.close();
	} 
}

该题需注意事项:

  1. 判断两字符串内容是否相同时需要使用equals()不能使用关系运算符“==”;
  2. 使用FileReader(<文件名>)读取文件时,文件不能放在当前包中;
  3. 流操作完毕后需使用close()方法关闭,以释放内存空间;
  4. readLine()读取一行字符的结束标志为:“\n”、“\r”或两者在一起
  5. 不要忘记抛出异常(throws IOException)

希望本文对你有所帮助,如果感觉还不错,勿忘给个赞 ^ _ ^ !

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值