java现有如下格式的成绩单score.txt: 姓名:张三,数学成绩88,英语成绩92。 姓名:李四,数学成绩67,英语成绩96。 姓名:王二,数学成绩92,英语成绩85。 程序在读取文件时,要求用户输入的密码是use123。密码正确程序读取score.txt并输出。一旦超过两次读入的密码不正确,程序立刻结束。(用InputStreamReader和BufferedReader流、FileReader流)。
时间: 2024-02-27 09:52:08 浏览: 139
MapReduce编程实战.docx
好的,我来为您解答这个问题。
首先,我们需要使用Java的文件读取功能来读取score.txt文件。在读取文件之前,我们需要先询问用户输入密码,并判断密码是否正确。如果密码不正确,则程序结束。如果密码正确,则使用BufferedReader流读取文件内容,并输出成绩单。以下是完整的代码:
```java
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ScoreReader {
public static void main(String[] args) {
String password = "use123";
int tryTimes = 0;
BufferedReader br = null;
try (InputStreamReader isr = new InputStreamReader(System.in);
BufferedReader brPassword = new BufferedReader(isr)) {
while (tryTimes < 3) {
System.out.print("请输入密码:");
String inputPassword = brPassword.readLine();
if (password.equals(inputPassword)) {
File file = new File("score.txt");
br = new BufferedReader(new FileReader(file));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
break;
} else {
tryTimes++;
System.out.println("密码错误,请重新输入!");
}
}
if (tryTimes == 3) {
System.out.println("输入密码错误超过三次,程序结束!");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (br != null) {
br.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
```
在代码中,我们首先定义了一个密码变量和尝试次数变量。然后使用BufferedReader流读取用户输入的密码,并与正确的密码进行比较。如果密码错误,则尝试次数加一并提示用户重新输入。如果密码正确,则使用BufferedReader流读取文件内容,并输出成绩单。如果尝试次数超过三次,则程序结束。
需要注意的是,程序中使用了try-with-resources语句来自动关闭流。这是Java 7中引入的新特性,可以避免在代码中显式关闭流的麻烦。
阅读全文