Проблема несоответствия при изменении регистра символов в Java

У меня есть проблема: я должен прочитать текстовый файл и для набора букв, если они в нижнем регистре, то я должен преобразовать их в верхний регистр.

Ниже приведен код:

    for (int i = 0; i < count; i++) {

        //outputArray[i] = inputToArray[i];
        for (int j = 0; j < charListLength; j++) {

            if (inputToArray[i] == charList[j]) {

                if (Character.isLowerCase(inputToArray[i])) {
                    inputToArray[i] = Character.toUpperCase(inputToArray[i]);
                }
                if (Character.isUpperCase(inputToArray[i])) {
                    inputToArray[i] = Character.toLowerCase(inputToArray[i]);
                }

            }
        }
    }

Входной файл содержит:

a, e, i, o, u строчные Это история A, E, I, O, U UPPERCASE

Но на выходе получается:

a, e, i, o, u, строчные буквы Это история a, e, i, o, u, upPeRCaSe

-

Обратите внимание, что строчные буквы "a, e, i, o, u Это история" и "A, E, I, O, U UPPERCASE" - это отдельные строки во входном файле, и выходной файл также содержит их.

Куда я иду не так, пожалуйста?

Спасибо за вашу большую помощь, поэтому, пожалуйста, помогите.

РЕШИТЬ:

    for (int i = 0; i < count; i++) {

        //outputArray[i] = inputToArray[i];
        for (int j = 0; j < charListLength; j++) {

            if (inputToArray[i] == charList[j]) {

                if (Character.isLowerCase(inputToArray[i])) {
                    inputToArray[i] = Character.toUpperCase(inputToArray[i]);
                } else if (Character.isUpperCase(inputToArray[i])) {
                    inputToArray[i] = Character.toLowerCase(inputToArray[i]);
                }

                break;

            }
        }
    }

Нужен перерыв!

1 ответ

Вы должны заменить свой второй if-клаузе с else if,

Учти это:

Ввод a, Ты первый if растворяется в true и делает a верхний регистр -> A,

Но тогда ваш второй if также растворяется в true так как A теперь в верхнем регистре, и поэтому он снова преобразуется в нижний регистр -> a,

Исправлена ​​версия с использованием else if:

for (int i = 0; i < count; i++) {

    //outputArray[i] = inputToArray[i];
    for (int j = 0; j < charListLength; j++) {

        if (inputToArray[i] == charList[j]) {

            if (Character.isLowerCase(inputToArray[i])) {
                inputToArray[i] = Character.toUpperCase(inputToArray[i]);
            }
            else if (Character.isUpperCase(inputToArray[i])) {
                inputToArray[i] = Character.toLowerCase(inputToArray[i]);
            }
        }
    }
}
Другие вопросы по тегам