Java BufferedReader赢得';看不懂
我有一个程序,用户名和密码在一个文本文件中,文本文件如下所示:Java BufferedReader赢得';看不懂,java,file,oop,bufferedreader,Java,File,Oop,Bufferedreader,我有一个程序,用户名和密码在一个文本文件中,文本文件如下所示: election:12345 我有这个代码来读取文件 try { BufferedReader read=new BufferedReader(new FileReader("election_un_pass.txt")); String line=""; while((line=read.readLine())!=null) { String [] info=line.split(":"
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();
}
每次运行程序时,即使输入的用户名和密码正确,也可能会出现用户名或密码不正确的消息,并且new Main()
不会出现。您可以:
了解如何在您使用的任何IDE中进行调试。使用调试模式,您可以一次执行一行代码,并查看每个点的变量值
发生错误时增加日志记录信息
例如,您可以打印到控制台/日志/对话框:
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)) {
相反。请检查Login.uname和Login.pass的值,它们似乎不匹配。确定不想使用字符串。equals
?Login
的值是什么?@VuralAcar哦,它们实际上是匹配的,Login.uname和Login.pass被初始化为txtname.getText()和txtPassword.getText(),但是由于你的建议,我直接使用了txtname.getText()和txtPassword.getText()。非常感谢你@马文txtname.getText()
和txtPassword.getText()
但是我现在直接使用了它们,现在已经修复了,非常感谢!!!可能重复的