我有一个简单的问题。
我已经在java中使用文本文件创建了一个简单的登录系统。
我的文本文件包含以下记录:
Hamada 114455
Ahmed 236974145
Johny 4123745
这些记录的编程格式如下:
String username, int password
问题出在登录操作时,系统应该像这样工作:
username: Ahmed
password: 114455
系统应在文本文件中搜索用户名和密码,如果存在,则显示“欢迎:)”。
如果没有,则说“用户名或密码错误”
问题:如果我输入了错误的用户名或密码,那么它会为每个未找到用户名和密码的行写入错误的用户名或密码。
这是我的代码:
System.out.println("Login Page");
System.out.printf("Username: ");
String user2 = input.next();
System.out.printf("Password: ");
int pass2 = input.nextInt();
Scanner y = null;
try{
y = new Scanner(new File("C:\\Users\\فاطمة\\Downloads\\accounts.txt"));
while(y.hasNext())
{
String a = y.next();
int b = y.nextInt();
if((a == null ? user2 == null : a.equals(user2)) && b == pass2)
System.out.println("Welcome :)");
else
System.out.println("Wrong username or password .. try again !!");
}
}
catch(Exception e)
{
}
答案 0 :(得分:1)
在while
循环中,使用boolean
变量(初始化为false
)。
如果找到具有相同数据的条目,请将其设置为true
。
然后在while循环之外打印结果。
boolean userExists = false;
while (y.hasNext()) {
// .....
if((a == null ? user2 == null : a.equals(user2)) && b == pass2)
userExists = true;
// ...
}
if (userExists)
System.out.println("Welcome");
else
System.out.println("Wrong username or password .. try again !!");
答案 1 :(得分:1)
boolean bool = false;
Scanner y = null;
try{
y = new Scanner(new File("Path"));
while(y.hasNext())
{
String a = y.next();
int b = y.nextInt();
if((a == null ? user2 == null : a.equals(user2)) && b == pass2)
bool = true;
}
if(bool)
System.out.println("Welcome :)");
else
System.out.println("Wrong username or password .. try again !!");
}
在您的情况下,您正在检查文本文件中每个条目的if else条件。您还可以在控制台上显示每个条目的消息。退出循环后,我修改了程序并写入控制台。
答案 2 :(得分:1)
以这种方式修改您的代码:
boolean isWrong = true ;
while(y.hasNext())
{
String a = y.next();
int b = y.nextInt();
if((a == null ? user2 == null : a.equals(user2)) && b == pass2)
isWrong = false ;
}
if(isWrong)
System.out.println("Wrong username or password .. try again !!");
else
System.out.println("Welcome :)");