我应该创建一个带有名称和密码的文本文件。 例如。彼得1212 约翰1234 玛丽0000 这些被称为名称和密码。
编写一个java程序,提示用户输入文件路径,名称和密码,并检查其是否有效。
如果名称和图钉正确,请打印出来"登录成功"如果失败"记录 失败"如果密码包含非数字字符,"密码 包含非数字字符"。这是我到目前为止所拥有的;
import java.util.*;
import java.io.*;
public class PINCheck {
public static void main(String[]args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter file path: ");
String filepath = s.nextLine();
File passwordFile = new File(filepath);
System.out.print("Enter name: ");
String name = s.nextLine();
System.out.print("Enter password: ");
String password = s.nextLine();
if (password.matches(".*[a-zA-Z]+.*")) {
System.out.println("You have entered a non-numerical PIN!");
} else { try {
Scanner sc = new Scanner(passwordFile);
if (sc.hasNext(name) && sc.hasNext(password)) {
System.out.println("You have logged in successfully.");
}else {
System.out.println("Login Failed.");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
答案 0 :(得分:1)
扫描仪#hasNext(字符串模式)
这里String参数,pattern - 指定要扫描的模式的字符串,它与值不匹配。
您需要迭代文件内容,匹配用户名和&密码与内容。
Path path = Paths.get(filepath);
try(Stream<String> lines = Files.lines(path)){
Optional<String> hasUser = lines.filter(s -> s.split(" ")[0].equals(name) && s.split(" ")[1].equals(passowrd)).findFirst();
if(hasUser.isPresent()){
System.out.println("You have logged in successfully.");
}else {
System.out.println("Login Failed.");
}
}
答案 1 :(得分:0)
代码应为
import java.util.*;
import java.io.*;
public class PINCheck {
public static void main(String[]args) {
Scanner s = new Scanner(System.in);
System.out.print("Enter file path: ");
String filepath = s.nextLine();
File passwordFile = new File(filepath);
System.out.print("Enter name: ");
String name = s.nextLine();
System.out.print("Enter password: ");
String password = s.nextLine();
if (password.matches(".*[a-zA-Z]+.*")) {
System.out.println("You have entered a non-numerical PIN!");
} else {
try {
Scanner sc = new Scanner(passwordFile);
while (sc.hasNext()){
String str = sc.nextLine();
System.out.println("Str="+str);
/*
StringTokenizer st = new StringTokenizer(str);
String uName = st.nextToken();
String uPwd = st.nextToken();
*/
String[] values = str.split(" ");
System.out.println("uname:upwd:"+values[0]+":"+values[1]);
if (name.equals(values[0]) && password.equals(values[1])) {
System.out.println("You have logged in successfully.");
break;
}else {
System.out.println("Login Failed.");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
}
}
输出:
输入文件路径:data.txt
输入姓名:ravi
输入密码:1234
UNAME:upwd:拉维:1234
您已成功登录。
我的data.txt文件内容:ravi 1234
注意: ==比较变量的引用而不是变量的内容。
您必须比较名称和&amp;来自名称&amp;的文件的密码从控制台输入的密码输入。它应该是“等于”比较,它不应该检查变量的引用。