我正在创建一个java应用程序,我需要从文本文件中获取用户PIN。我在下面使用了以下代码,但它无法正常工作。任何人都可以尽快帮助我.....
String typedPIN="";
Menus obj1=new Menus();
BufferedReader getIt=new BufferedReader(new InputStreamReader(System.in));
String userPIN="";
try{
BufferedReader br = new BufferedReader(new FileReader(new File("D:\\Studies\\BCAS\\HND\\Semester 1\\Programming Concepts\\Assignment\\AccountPIN.tab")));
String strLine=null ;
System.out.println("Enter PIN");
userPIN=getIt.readLine();
while ((strLine = br.readLine()) != null) {
if(userPIN.equals(strLine)){
System.out.println("You have login!");
obj1.MainMenu();
}
}
}catch (Exception e){//Catch exception if any
System.err.println("Error: " + e.getMessage());
}
}
答案 0 :(得分:2)
假设这是您的输入数据
PIN AccountNo Balance
1598 01-10-102203-0 95000
4895 01-10-102248-0 45000
9512 01-10-102215-0 125000
6125 01-10-102248 85000
您需要将每一行拆分为其组成部分,您可以使用Scanner
类来执行此操作,因为它可以将引脚/帐号提取为字符串,余额为Double / Integer
目前您正在将用户输入与整行进行比较,因此您需要输入1598 01-10-102203-0 95000
引脚而不是1598
才能登录。
我建议你将它分成两个方法,一个方法在给定文件时返回Collection
个Account
个对象,另一个方法处理登录。
您可以重新编写while循环,以便在没有有效的引脚时提供有用的错误消息,例如
final File data = new File("D:\\Studies\\BCAS\\HND\\Semester 1\\Programming Concepts\\Assignment\\AccountPIN.tab");
Account userAcc = null;
for (Account acc : getAccounts(data)) {
if(userPIN.equals(acc.getPin())){
userAcc = acc;
}
}
if (userAcc == null) {
obj1.MainMenu();
} else {
// display error
}