【发布时间】:2016-01-30 19:19:30
【问题描述】:
我只是在尝试使用 java (NetBeans),并且想开发一个基于文本的快速冒险游戏。我试图让它在两个文本文件“users.txt”和“passwords.txt”中检查您的用户名和密码,我正在遵循Cave of Programming上的指南
这里是导入
import java.io.*;
import javax.swing.JFrame;
这是错误所在,
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
String usernametxt = "users.txt";
String passwordtxt = "passwords.txt";
String user = null;
String pass = null;
try {
// file reader for username \\
FileReader fileReader = new FileReader(usernametxt);
// file reader for password \\
FileReader fr = new FileReader(passwordtxt);
// buffered reader for username \\
BufferedReader bufferedReader = new BufferedReader(fileReader);
// buffered reader for password \\
BufferedReader br = new BufferedReader(fr);
// check for if user doesn't equal null \\
while((user = bufferedReader.readLine()) != null){
// if username equals first line of username.txt \\
if (username.getText().equalsIgnoreCase(user)){
// check for if pass doesn't equal null \\
while((pass = br.readLine()) != null){
// if password equals first line of passwords.txt \\
if (password.getPassword().equals(pass)){
// if password = pass than it will exit \\
System.exit(1);
}
// else continue \\
else{
continue;
}
}
}
}
bufferedReader.close();
br.close();
}
catch(FileNotFoundException ex){
System.out.println("Unable to open file ");
}
catch(IOException ex){
System.out.println("Error reading file");
}
}
这里是文本文件
users.txt
matthew
passwords.txt
matt
此处提供完整代码 http://textuploader.com/57urs
最新代码在这里 http://textuploader.com/577qk
随时在这里问我问题。
提前感谢您的帮助!
最新代码
private void loginActionPerformed(java.awt.event.ActionEvent evt) {
String usernames = username.getText();
String passwords = password.toString();
boolean signedin = false;
String usernametxt = "users.txt";
String passwordtxt = "passwords.txt";
String user = null;
String pass = null;
try {
FileReader fr1 = new FileReader(usernametxt);
FileReader fr2 = new FileReader(passwordtxt);
BufferedReader br1 = new BufferedReader(fr1);
BufferedReader br2 = new BufferedReader(fr2);
System.out.println("Username: "+br1.readLine());
System.out.println("Password: "+br2.readLine());
// While 循环未运行(不是 if 语句错误 \
while ((user = br1.readLine()) != null){
// checks if username is not equal to usernames.txt \\
if (user.equalsIgnoreCase(usernames)){
System.out.println("while loop running, username (right)");
break;
}
else{
System.out.println("while loop running, username (wrong)");
}
}
br1.close();
while ((pass = br2.readLine())!= null){
if (pass.equalsIgnoreCase(passwords)){
signedin = true;
System.out.println("While loop running, password (right)");
break;
}
else{
System.out.println("While loop running, password (wrong)
}
}
br2.close();
// 注释掉 if 语句,因为我不想在测试时关闭 \
// if (signedin){
// System.out.println("SIGNEDIN = TRUE");
// new error1().setVisible(true);
// this.dispose();
// }
// if (!signedin){
// System.out.println("SIGNEDIN = FALSE");
// System.exit(1);
// }
}
catch(FileNotFoundException ex){
System.out.println("Unable to open file ");
}
catch(IOException ex){
System.out.println("Error reading file");
}
}
新问题
while 循环不运行,当它不打印“While loop running,User/Pass”时确认这一点,这不是 if/then 语句错误,因为我添加了 else 语句以打印 if 用户名是对还是错。请帮忙,谢谢马修。
【问题讨论】:
-
你能提供一个堆栈跟踪吗?
-
不是一个很好的代码实现。您正在使用嵌套的 while 循环。您可以先从单独列表中的两个文件中检索所有用户名和密码,然后开始进行比较。
-
好吧,我试试看
-
我如何获得堆栈跟踪?,我不知道那是什么
-
当您的代码出现问题时,您必须告诉我们错误/异常是什么以及它们发生在哪里。同时发布 Stacktrace。如果您不知道从哪里获得,请在 Google 上搜索“[IDE 名称] stacktrace”之类的内容。