Я пытаюсь создать JFrame, который проверяет, соответствует ли текст, размещенный в JTextField, такой же, как информация в TXT-файле. Тогда, если это правильно, он проверяет, соответствует ли информация в JPasswordField информации в файле .txt.Почему мой код проверки строкой не работает
public void actionPerformed(ActionEvent e)
{
if(e.getSource() == button)
{
if(!username.getText().equals("") && passIsGood())
{
try
{
Scanner reader = new Scanner(new File("users.txt"));
reader.useDelimiter("\t|\n");
reader.nextLine();
while(reader.hasNextLine())
{
if(reader.next().equals(username.getText()))
{
//Username is correct, now checks for password:
System.out.println("Username passed");
if(reader.next().equals(passToString()))
{
//Username & Password are correct
System.out.println("Password passed");
break;
}
} else if(!reader.hasNextLine())
{
wrongInfo();
} else
{
reader.nextLine();
}
}
reader.close();
frame.dispose();
} catch(Exception ex)
{
JOptionPane.showMessageDialog(null, ex);
}
} else
{
JOptionPane.showMessageDialog(null, "Please enter a valid Username and Password");
}
}
}
private static String passToString()
{
String passString = new String(password.getPassword());
return passString;
}
я, насколько это имя пользователя мимоходом, но я чувствую, как .equals (passToString()) может быть причиной проблемы. Текстовый файл выглядит следующим образом: Имя пользователя Пароль тест thetest test2 thetest3
Обратите внимание, что пробелы в области между каждой вкладки, следовательно, мой разделителем, используя («\ т | \ п»);
после каждого второго поля в user.txt это новая строка – Otanan
Зачем вам нужно вызвать reader.nextLine() в верхней части? – sasankad
@sasankad Первая строка в моем .txt-файле была для форматирования, она сказала «Username password» в качестве первой строки, чтобы указать, как записать остальные, и я хотел проигнорировать ее. – Otanan