BufferedReader 不会读取
BufferedReader won't read
我有一个程序,用户名和密码在一个文本文件中,文本文件如下所示:
election:12345
我有这段代码可以读取文件
try {
BufferedReader read=new BufferedReader(new FileReader("election_un_pass.txt"));
String line="";
while((line=read.readLine())!=null) {
String [] info=line.split(":");
if(info[0].matches(Login.uname) && info[1].matches(Login.pass)){
new Main();
} else {
JOptionPane.showMessageDialog(null, "Username or Password might not be correct");
}
Login.txtUName.setText("");
Login.txtPassword.setText("");
}
} catch (Exception e1) {
e1.printStackTrace();
}
每次我运行我的程序,即使我输入的用户名和密码是正确的,Username or Password might not be correct
消息仍然会出现,new Main()
不会出现。
你可以:
- 了解如何在您使用的 IDE 中进行调试。使用调试模式,您可以一次执行一行代码,并查看每一点的变量值。
- 增加错误发生时的日志信息
例如,您可以打印到 console/logs/dialog:
String msg = String.format("could not find user name: [%s] and password: [%s] in line: [%s]", Login.uname, Login.pass, line);
显然,出于安全原因,当输入了不正确的值时,您不应该在任何地方打印预期的用户名和密码,但这可能是找出问题所在的快速方法:)它可以像尾随一样简单某处空白字符或某处不正确的大小写。
您确定要使用 String.matches(regex)
进行比较吗?该参数被视为正则表达式,因此 Login.uname
或 Login.pass
值中的任何正则表达式元字符都将被解释为正则表达式。这意味着您的比赛可能会以您意想不到的方式发挥作用。
我怀疑你真的想说:
if (info[0].equals(Login.uname) && info[1].equals(Login.pass)) {
相反。
我有一个程序,用户名和密码在一个文本文件中,文本文件如下所示:
election:12345
我有这段代码可以读取文件
try {
BufferedReader read=new BufferedReader(new FileReader("election_un_pass.txt"));
String line="";
while((line=read.readLine())!=null) {
String [] info=line.split(":");
if(info[0].matches(Login.uname) && info[1].matches(Login.pass)){
new Main();
} else {
JOptionPane.showMessageDialog(null, "Username or Password might not be correct");
}
Login.txtUName.setText("");
Login.txtPassword.setText("");
}
} catch (Exception e1) {
e1.printStackTrace();
}
每次我运行我的程序,即使我输入的用户名和密码是正确的,Username or Password might not be correct
消息仍然会出现,new Main()
不会出现。
你可以:
- 了解如何在您使用的 IDE 中进行调试。使用调试模式,您可以一次执行一行代码,并查看每一点的变量值。
- 增加错误发生时的日志信息
例如,您可以打印到 console/logs/dialog:
String msg = String.format("could not find user name: [%s] and password: [%s] in line: [%s]", Login.uname, Login.pass, line);
显然,出于安全原因,当输入了不正确的值时,您不应该在任何地方打印预期的用户名和密码,但这可能是找出问题所在的快速方法:)它可以像尾随一样简单某处空白字符或某处不正确的大小写。
您确定要使用 String.matches(regex)
进行比较吗?该参数被视为正则表达式,因此 Login.uname
或 Login.pass
值中的任何正则表达式元字符都将被解释为正则表达式。这意味着您的比赛可能会以您意想不到的方式发挥作用。
我怀疑你真的想说:
if (info[0].equals(Login.uname) && info[1].equals(Login.pass)) {
相反。