Сравнение строки с массивом строк - PullRequest
1 голос
/ 09 ноября 2011

Правильно, в основном, я пытаюсь сделать очень простой экран входа в систему, чтобы узнать свинг.

Моя проблема в том, что у меня сейчас есть файл pass.txt, который отформатирован так:

Username = bob,tony,mike
Password = pass,pass2,pass3

в моем Java-файле я получаю строки, используя:

String[] user = prop.getProperty("Username").split(",");

Теперь я сравниваю это с моим вводом текста из JTextField, однако всегда получается, что у меня есть:

if (input2.equals(pass) && userin.getText().equals(user))

Теперь я предполагаю, что моя проблема в том, что у меня есть массив строк, и теперь он сравнивает его с одной строкой, что я хочу сделать, это просмотреть массив, и если какой-либо из них совпадает, я хочу еговзять этот матч и использовать его, если это имеет смысл, есть ли способ пойти по этому поводу?

Ответы [ 4 ]

6 голосов
/ 09 ноября 2011

Я думаю, что это может помочь вам, потому что я думаю, что вы должны проверить каждого пользователя с его паролем в этом массиве:

for(int i=0;i < user.size();i++){
  if(input2.equals(pass[i]) && userin.getText().equals(user[i])){
   //your code
  }
}
4 голосов
/ 09 ноября 2011

Если у вас есть массив pass, соответствующий вашему массиву user, и каждая запись в user гарантированно будет иметь соответствующую запись в pass, тогда должно работать следующее решение:

int index = Arrays.asList(user).indexOf(userin.getText());
String password = pass[index];

if (password.equals(input2)) {
    // Successful authentication
} else {
    // Authentication failed
}
  • Arrays.asList(user).indexOf(userin.getText()) получит индекс пользователь в списке (в вашем примере "bob" => 0; "tony" => 1; "mike" => 2).
  • password - это строка пароля с тем же индексом (в вашем примере "pass" => 0; "pass2" => 1; "pass3" => 2).
  • Тогда if сравнивает пароль, связанный с пользователем (password) с паролем, который был введен в диалоге (input2).
0 голосов
/ 09 ноября 2011

Вы должны каким-то образом искать в массиве искомую строку. Есть несколько способов сделать это, я обрисую один метод.

int index = 0;
for (String s : user) {
    if (s.equals(userin.getText()) {
        // the username matches! now check to see if the password at the _same index_ matches
        if (pass[index].eqals(input2.getText()) {
            // correct username and password!
        } else {
            // bad password!
        }
    }
    ++index;
}

Я предполагаю, что у вас есть массив паролей с именем pass и индексы совпадают с индексами массива user. (user[i] пароль pass[i])

0 голосов
/ 09 ноября 2011

Вам придется поискать в таблице имен пользователей, найти позицию введенного имени пользователя, а затем проверить, равен ли пароль на этой позиции тому, который ввел пользователь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...