Попытка изменить символы в верхний регистр в мексиканском стиле волны - PullRequest
0 голосов
/ 09 апреля 2020

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

Input: hello

Output: Hello
        hEllo
        heLlo
        helLo
        hellO

Однако, то, что я получаю, это просто

Input: hello

Output: hello
        hello
        hello
        hello
        hello

Это то, как мой l oop выглядит в настоящее время

for(int i=0;i<s.length();i++)
   {
     a1=s.charAt(i);
     a2=Character.toUpperCase(a1);
     System.out.println(s);
    }

s - это строка, в которой a1 и a2 - два случайных символа для хранения текущего значения.

Я не знаком с "Character.toUpperCase", но нашел его в Интернете в надежде, что он поможет решить мои проблемы, однако, это не похоже на

Ответы [ 2 ]

3 голосов
/ 09 апреля 2020

Вы печатаете ту же строку. Чтобы получить желаемый результат, вы можете сделать что-то вроде следующего:

String s = "hello";
for(int i=0;i<s.length();i++)
{
    char a1 = s.charAt(i);
    char a2 = Character.toUpperCase(a1);
    if (i == 0)
        System.out.println(a2 +s.substring(i+1));
    else
        System.out.println( s.substring(0,i) +a2 +s.substring(i+1));
}

Если вы хотите пропустить условие if-else,

String s = "hello";
System.out.println(s.charAt(0) +s.substring(1)); // for first char
for(int i=1;i<s.length();i++) // for rest of the chars
{
    char a1 = s.charAt(i);
    char a2 = Character.toUpperCase(a1);
    System.out.println( s.substring(0,i) +a2 +s.substring(i+1));
}
0 голосов
/ 09 апреля 2020

String является неизменным классом. Вы не можете изменить String на месте. Следовательно, установка символа в String в верхний регистр не меняет его.

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

Приведенный ниже код создает новый String. Сначала я получаю массив отдельных символов в источнике String - что соответствует привет в соответствии с вашим вопросом. Затем я перебираю символы в массиве, устанавливая каждый из них по очереди в верхний регистр, одновременно возвращая ранее измененный символ обратно в нижний регистр. И в каждой итерации я создаю новый String для текущего массива букв.

char[] letters = "hello".toCharArray();
for (int i = 0; i < letters.length; i++) {
    if (i - 1 >= 0) {
        letters[i - 1] = Character.toLowerCase(letters[i - 1]);
    }
    letters[i] = Character.toUpperCase(letters[i]);
    System.out.println(new String(letters));
}

Результат выполнения приведенного выше кода:

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