изменение значения String на основе индекса String [] - PullRequest
0 голосов
/ 15 января 2020

я знаю, как это сделать

public class AccountPicker {

    public static void main(String[] args) throws InterruptedException {
        String password = "";
        String[] accounts = {"a", "b", "c"};

        Random r = new Random();
        int assigned = r.nextInt(3);

        if (assigned == 2) {
            password = "password";
            System.out.println("account: " + accounts[assigned] + " " + "password: " + password);
        }

        if (assigned == 1) {
            password = "Password";
            System.out.println("account: " + accounts[assigned] + " " + "password: " + password);
        }

        if (assigned == 0) {
            password = "PASSWORD";
            System.out.println("account: " + accounts[assigned] + " " + "password: " + password);
        }
    }
}

в основном то, что он делает, это выбор учетной записи a, b , or c и изменение password в зависимости от того, какой индекс был выбран из accounts

но что, если у меня есть 100 значений в accounts?

, делающих 100, если заявления будут занимать слишком много кода ..

есть ли более эффективный способ сделать это?

Ответы [ 3 ]

3 голосов
/ 15 января 2020

Вы можете создать массив паролей, соответствующих каждой учетной записи, например:

import java.util.Random;

public class AccountPicker {

    public static void main(String[] args) throws InterruptedException {

        String password = "";
        String[] accounts = { "a", "b", "c" };
        String[] passwords = { "password", "Password", "PASSWORD" };

        Random r = new Random();
        int assigned = r.nextInt(3);

        System.out.println("account: " + accounts[assigned] + ", password: " + passwords[assigned]);
    }
}

Пример выполнения:

account: c, password: PASSWORD
1 голос
/ 15 января 2020

Эта задача особенно подходит для Map. Таким образом, вы также можете сделать это следующим образом.

    Map<String,String> accts = Map.of("a","password", "b", "Password", "c", "PASSWORD");
    System.out.println(accts.get("c"));

Печать

ПАРОЛЬ

Чтобы увидеть их все, вы можете сделать это различными способами .

accts.forEach(System.out::println);

или

accts.forEach(e->System.out.println(e.getKey() + " " e.getValue());

Вместо того, чтобы давать вам номер, они просто предоставляют acct (или имя пользователя). Но используйте то, что лучше для вас.

0 голосов
/ 15 января 2020

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

...