Как я могу вернуть элементы моего массива в указанном порядке? - PullRequest
0 голосов
/ 18 октября 2019

Моя функция - генератор паролей. Он выбирает количество слов в предложении. И поочередно принимает firstLetter и lastLetter. Примеры в методе void main.

Моя проблема в том, что я не знаю, как повернуть firstChar и lastChar. Я попытался сделать это по модулю в операторе if, но больше ничего не получилось. Может быть, у вас, ребята, есть идеи.

public static String pwdgen(String s) {
    String[] Splitted = s.split(" ");
    int count = s.split(" ").length;
    int i = 0;
    String firstChar = "";
    String lastChar = "";

    for(i = 0; i < count; i = i + 1) {
        firstChar += Splitted[i].substring(0, 1);
        lastChar += Splitted[i].substring(Splitted[i].length() - 1);
    }


    return count + firstChar + lastChar;
}

public static void main(String[] args) {
    String pwd = pwdgen("Dies ist nur ein doofes Beispiel");
    System.out.println(pwd); // => "6Dtnndl"
    System.out.println(pwdgen("a b c")); // => 3abc
}

1 Ответ

0 голосов
/ 18 октября 2019

при возврате строки в генераторе паролей;вы возвращаете все первые буквы - затем все последние буквы:

return count + firstChar + lastChar;

В вашем цикле for;вместо добавления их в две отдельные строки, добавьте их в одну и ту же строку. Вам нужно сохранить логическое значение, чтобы проверить, добавляете ли вы первую или последнюю букву.

public static String pwdgen(String s) {
    String[] Splitted = s.split(" ");
    int count = s.split(" ").length;
    int i = 0;

    String pass = "";
    boolean addFirstLetter = true;
    for(i = 0; i < count; i = i + 1) {
        pass += (addFirstLetter) ? Splitted[i].substring(0, 1) : Splitted[i].substring(Splitted[i].length() - 1);
        addFirstLetter = !addFirstLetter;
    }

    return count + pass;
}

public static void main(String[] args) {
    String pwd = pwdgen("Dies ist nur ein doofes Beispiel");
    System.out.println(pwd); // => "6Dtnndl"
    System.out.println(pwdgen("a b c")); // => 3abc
}

addFirstLetter будет отслеживать, добавляете ли вы первую букву в этом цикле или нет, затемОператор ternery (?:) добавит правильную букву в строку. Затем логическое значение переключается для добавления другой буквы в следующем цикле.

...