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();
}
}
该题需注意事项:
- 判断两字符串内容是否相同时需要使用equals()不能使用关系运算符“==”;
- 使用FileReader(<文件名>)读取文件时,文件不能放在当前包中;
- 流操作完毕后需使用close()方法关闭,以释放内存空间;
- readLine()读取一行字符的结束标志为:“\n”、“\r”或两者在一起
- 不要忘记抛出异常(throws IOException)
希望本文对你有所帮助,如果感觉还不错,勿忘给个赞 ^ _ ^ !
还没有评论,来说两句吧...