2017-01-05 6 views
0

У меня есть текстовый файл с именем samplename, в этом файле есть 3 строки значения:Почему нет .equals() сравнить эти строки?

samplename 
samplepassword 
%%%%%%%%%%%%%%%%% 

программка о системе Логин-регистра. Когда я типа

samplename 

в первом JTextField и

samplepassword + 

во втором JTextField и нажмите кнопку входа в систему, он должен проверить, если у меня есть такой счет, если он имеет право имя пользователя & пароль. Программа читает вещи, просто не сравнивая их с JTextFields. Что я делаю неправильно?!?

import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 
import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 
import java.util.Scanner; 

import javax.swing.JButton; 
import javax.swing.JOptionPane; 
import javax.swing.JTextField; 

public class SomeClass 
{ 
    public JButton loginButton; 

    public JTextField login_username; 

    public JTextField login_password; 

    String check = null; 

    String check2 = null; 

    public static void main(String[] args) 
    { 
    SomeClass someClass = new SomeClass(); 
    someClass.doSomething(); 
    } 

    public void doSomething() 
    { 

    loginButton.addActionListener(new ActionListener() 
    { 

     @Override 
     public void actionPerformed(ActionEvent e) 
     { 
     Scanner scanner = new Scanner(System.in); 
     BufferedReader rd = null; 
     String line; 
     boolean gothrew = false; 
     boolean ifDOES = false; 
     String Username; 
     String Password; 
     Password = login_username.getText().trim(); 
     Username = login_password.getText().trim(); 
     try 
     { 
      rd = new BufferedReader(new FileReader(
       "C:\\users\\Dominik Gyarmati\\AppData\\Roaming\\KeepSafe\\users\\" 
        + login_username.getText() + ".txt")); 
     } 
     catch (FileNotFoundException ex) 
     { 
      JOptionPane.showMessageDialog(null, "Your Account doesn't exist"); 
     } 
     try 
     { 
      while ((line = rd.readLine()) != null) 
      { 

      if (check == null) 
      { 
       check = line; 
       check.trim(); 
       gothrew = true; 
       System.out.println(check); 
      } 
      else if (gothrew == true) 
      { 
       check2 = line; 
       check2.trim(); 
       System.out.println(check2); 
       gothrew = false; 
       ifDOES = true; 
      } 

      else if (check.equals(Username) && check2.equals(Password)) 
      { 

       JOptionPane.showMessageDialog(null, 
        "You've logged into your account"); 
       check = null; 
       check2 = null; 
       ifDOES = false; 
      } 
      else 
      { 
       JOptionPane.showMessageDialog(null, 
        "Username or Password is wrong"); 
       check = null; 
       check2 = null; 
       ifDOES = false; 
      } 
      } 
     } 
     catch (IOException ioexex) 
     {} 
     } 
    }); 
    } 
} 

EDIT: я должен был изменить

else if (check.equals(Username) && check2.equals(Password)) 

в

else if (check.equals(login_username.getText().trim()) && 
    check2.equals(login_password.getText().trim())) { 
+2

Почему «Имя пользователя» назначено из текста в поле пароля и наоборот? – azurefrog

+1

Уважаемый Dominik Gyarmati, вы действительно должны заботиться о том, чтобы очистить свой примерный код. – rekire

+1

не ответ, но чтение содержимого файла должно быть в первом блоке. Вы не хотите читать, если файл не может быть открыт. – MeBigFatGuy

ответ

0

Прежде всего, ваш код плохо пахнет:

  • не использовать заглавные имена для переменных,
  • затруднительное identation,
  • использование примерочных с-ресурсами при чтении из файла,
  • не используют жестко закодированные строки,
  • правильно использовать String.trim(), как строки являются неизменными,
  • правильно обрабатывать исключения и так далее.

Во-вторых, попробуйте использовать инструменты отладки: отладка отлично отвечает на ваш вопрос.

И, наконец, проверьте эти строки:

Password = login_username.getText().trim(); 
Username = login_password.getText().trim(); 

Заменить Password с Username и наоборот.

+0

Спасибо, что сработало – Strawl