用户输入校验、异常处理,用户注册时需要输入用户名、密码信息,并能够进行账号信息的持久化存储,可以使用IO技术将用户信息保存到本地文件的Java代码
时间: 2024-03-18 14:42:40 浏览: 103
structs in action中文完全版\12. 用户输入校验.pdf
好的,以下是一个简单的 Java 代码示例,它实现了用户输入校验、异常处理,以及用户注册信息的持久化存储:
```java
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class UserRegistration {
private static final String USER_FILE = "users.txt";
public static void main(String[] args) {
// 获取用户输入的用户名和密码
String username = getUserInput("请输入用户名:");
String password = getUserInput("请输入密码:");
// 校验用户名和密码是否合法
if (!isValidUsername(username)) {
System.out.println("用户名不合法!");
return;
}
if (!isValidPassword(password)) {
System.out.println("密码不合法!");
return;
}
// 将用户信息写入文件
try {
writeUserToFile(username, password);
System.out.println("注册成功!");
} catch (IOException e) {
System.out.println("注册失败:" + e.getMessage());
}
}
/**
* 获取用户输入的字符串
*/
private static String getUserInput(String prompt) {
System.out.print(prompt);
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
return reader.readLine();
} catch (IOException e) {
return "";
}
}
/**
* 校验用户名是否合法
*/
private static boolean isValidUsername(String username) {
// 简单校验,用户名只允许包含字母和数字,且长度在 6 到 20 个字符之间
return username.matches("^[a-zA-Z0-9]{6,20}$");
}
/**
* 校验密码是否合法
*/
private static boolean isValidPassword(String password) {
// 简单校验,密码长度在 6 到 20 个字符之间
return password.length() >= 6 && password.length() <= 20;
}
/**
* 将用户名和密码写入文件
*/
private static void writeUserToFile(String username, String password) throws IOException {
// 如果文件不存在,则创建文件
File file = new File(USER_FILE);
if (!file.exists()) {
file.createNewFile();
}
// 将用户名和密码写入文件
BufferedWriter writer = new BufferedWriter(new FileWriter(USER_FILE, true));
writer.write(username + "," + password);
writer.newLine();
writer.close();
}
}
```
在以上代码中,我们首先获取用户输入的用户名和密码,然后分别调用 `isValidUsername` 和 `isValidPassword` 方法校验输入是否合法。如果校验通过,就将用户名和密码写入文件中,实现了持久化存储。
注意,我们在写入文件时使用了 `BufferedWriter` 对象,这可以提高写入效率。同时,我们还将 `FileWriter` 的第二个参数设为 `true`,表示在文件末尾追加内容而不是覆盖原有内容。
当然,在实际开发中,我们可能需要更加严格的校验规则,以及更加安全的存储方式,这里仅提供一个简单的示例供参考。
阅读全文