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

矫情吗;* 2023-10-08 12:53 88阅读 0赞

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

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

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

源码:

  1. import java.io.*;
  2. public class RecordOut {
  3. public static void main(String[] args) throws IOException{
  4. //创建对象
  5. int record;
  6. InputStreamReader isr = new InputStreamReader(System.in);
  7. BufferedReader br = new BufferedReader(isr);
  8. //输入成绩
  9. record = Integer.parseInt(br.readLine());
  10. //成绩等级判定
  11. switch ((record+5)/10) {
  12. case 10:
  13. case 9:
  14. System.out.println("优");break;
  15. case 8:
  16. System.out.println("良");break;
  17. case 7:
  18. System.out.println("中");break;
  19. case 6:
  20. System.out.println("及格");break;
  21. default:
  22. System.out.println("不及格");break;
  23. }
  24. isr.close();
  25. br.close();
  26. }
  27. }

该练习需注意事项:
使用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()、循环与分支语句的使用

源码:

  1. import java.io.*;
  2. public class RecordTable {
  3. public static void main(String[] args) throws IOException{
  4. int sum = 0;//统计密码错误次数
  5. System.out.println("请输入用户密码:");
  6. //读取用户输入的密码
  7. BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
  8. String psw =in.readLine();
  9. //循环判断
  10. while( !psw.equals("use123")) {
  11. sum++;
  12. if (sum < 2) {
  13. System.err.println("密码错误, 请重新输入:");
  14. psw = in.readLine();
  15. }else{
  16. System.out.println("两次密码错误,退出程序!");
  17. System.exit(0);
  18. }
  19. }
  20. //输出文件
  21. String str;
  22. FileReader fr = new FileReader("lib/score.txt");
  23. BufferedReader bf = new BufferedReader(fr);
  24. while ((str = bf.readLine()) != null) {
  25. System.out.println(str);
  26. }
  27. fr.close();
  28. bf.close();
  29. }
  30. }

该题需注意事项:

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

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

发表评论

表情:
评论列表 (有 0 条评论,88人围观)

还没有评论,来说两句吧...

相关阅读

    相关 java 节流字符区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在

    相关 Java 节流字符区别

    字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作的,而字符流在

    相关 Java IO——节流字符

    1、字节流与字符流 1.1 流的概念 在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使

    相关 节流字符梳理

    字节流与字符流梳理 哈喽大家好今天又见面了,今天想写的是IO流的一些东西,之前承诺的单例模式的东西我在微信公众号(狗蛋科技)里面已经写好了,就是想着自己重新整理一下可能会