while (true) { String input = in.readLine(); if (input == null) { return; }改成多行读取
时间: 2024-02-10 11:05:09 浏览: 35
可以使用 `while` 循环和 `in.ready()` 方法来实现多行读取,具体代码如下:
```java
while (true) {
if (in.ready()) {
String input = in.readLine();
if (input == null) {
return;
}
// 处理输入
} else {
// 等待输入
Thread.sleep(100);
}
}
```
上述代码中,`in.ready()` 方法用来检查输入流是否有数据可读。如果有数据可读,则使用 `in.readLine()` 方法读取一行数据。如果读取到的数据为 `null`,则表示输入流已经结束,可以退出循环。如果没有数据可读,则等待一段时间后再次检查。这里使用 `Thread.sleep(100)` 方法等待 100 毫秒,减少 CPU 的占用率,提高性能。
相关问题
Java中while (true) { String input = in.readLine(); if (input == null) { return; }改成多行读取
可以使用 `while` 循环和 `in.ready()` 方法来实现多行读取,具体代码如下:
```java
while (true) {
StringBuilder sb = new StringBuilder();
while (in.ready()) {
String input = in.readLine();
if (input == null) {
return;
}
sb.append(input);
sb.append(System.lineSeparator());
}
String input = sb.toString().trim();
// 处理输入
}
```
上述代码中,首先定义了一个 `StringBuilder` 对象 `sb`,用来存储多行输入的内容。然后进入 `while` 循环,使用 `in.ready()` 方法检查输入流是否有数据可读,如果有数据可读,则使用 `in.readLine()` 方法读取一行数据,并将其添加到 `sb` 对象中。如果读取到的数据为 `null`,则表示输入流已经结束,可以退出循环。最后,使用 `sb.toString().trim()` 方法获取完整的输入内容,并去除开头和结尾的空格和换行符。最后一步是为了确保输入内容的正确性。最后,你可以在注释的地方添加你的输入处理代码。
java用io设计注册,登入,忘记密码功能,登入需要验证码正确才能登入,注册需要身份证号码
好的,下面是 Java 中使用 IO 流实现注册、登录、忘记密码功能以及验证码功能的示例代码:
```java
import java.io.*;
import java.util.Random;
public class RegisterLoginForget {
private static final String FILE_NAME = "users.txt"; // 存储用户信息的文件名
private static final String VERIFY_CODE = "ABCD1234"; // 验证码,这里使用固定值,实际应用中可以使用随机生成的值
public static void main(String[] args) {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
System.out.println("请选择功能:1.注册 2.登录 3.忘记密码 4.退出");
try {
String input = reader.readLine();
if (input.equals("1")) {
register(reader);
} else if (input.equals("2")) {
login(reader);
} else if (input.equals("3")) {
forgetPassword(reader);
} else if (input.equals("4")) {
System.out.println("程序已退出!");
break;
} else {
System.out.println("输入有误,请重新选择!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void register(BufferedReader reader) throws IOException {
System.out.println("请输入身份证号码:");
String idNumber = reader.readLine();
if (idNumber.length() != 18) {
System.out.println("身份证号码格式不正确!");
return;
}
System.out.println("请输入用户名:");
String username = reader.readLine();
System.out.println("请输入密码:");
String password = reader.readLine();
PrintWriter writer = new PrintWriter(new FileWriter(FILE_NAME, true));
writer.println(idNumber + "," + username + "," + password);
writer.close();
System.out.println("注册成功!");
}
private static void login(BufferedReader reader) throws IOException {
System.out.println("请输入用户名:");
String username = reader.readLine();
System.out.println("请输入密码:");
String password = reader.readLine();
System.out.println("请输入验证码:" + VERIFY_CODE);
String verifyCode = reader.readLine();
if (!verifyCode.equals(VERIFY_CODE)) {
System.out.println("验证码错误!");
return;
}
BufferedReader fileReader = new BufferedReader(new FileReader(FILE_NAME));
String line;
boolean found = false;
while ((line = fileReader.readLine()) != null) {
String[] parts = line.split(",");
if (parts[1].equals(username) && parts[2].equals(password)) {
found = true;
break;
}
}
fileReader.close();
if (found) {
System.out.println("登录成功!");
} else {
System.out.println("用户名或密码错误!");
}
}
private static void forgetPassword(BufferedReader reader) throws IOException {
System.out.println("请输入身份证号码:");
String idNumber = reader.readLine();
if (idNumber.length() != 18) {
System.out.println("身份证号码格式不正确!");
return;
}
BufferedReader fileReader = new BufferedReader(new FileReader(FILE_NAME));
String line;
boolean found = false;
while ((line = fileReader.readLine()) != null) {
String[] parts = line.split(",");
if (parts[0].equals(idNumber)) {
found = true;
System.out.println("您的密码是:" + parts[2]);
break;
}
}
fileReader.close();
if (!found) {
System.out.println("身份证号码错误,找回密码失败!");
}
}
}
```
上述代码中,`RegisterLoginForget` 类实现了注册、登录、忘记密码功能以及验证码功能。其中,`FILE_NAME` 常量指定了存储用户信息的文件名,用户信息以身份证号码、用户名和密码的形式存储在该文件中。在 `register` 方法中,用户输入身份证号码、用户名和密码,将其写入文件中;在 `login` 方法中,用户输入用户名、密码和验证码,如果验证码匹配成功,读取文件中的用户信息,与用户输入的用户名和密码进行比对。如果匹配成功,则登录成功,否则提示用户名或密码错误。在 `forgetPassword` 方法中,用户输入身份证号码,读取文件中的用户信息,如果身份证号码匹配成功,输出对应的密码,否则提示身份证号码错误,找回密码失败。验证码功能使用固定值,实际应用中可以使用随机生成的值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)