Java字符大小写更改不一致问题

时间:2014-10-13 16:03:10

标签: 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

-

请注意&#34; a,e,i,o,u小写这是一个故事&#34;和&#34; A,E,I,O,U UPPERCASE&#34;是输入文件中的单独行,输出文件也包含它们。

我哪里出错了?

感谢您的大力帮助,请帮忙。

解决:

    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 个答案:

答案 0 :(得分:1)

您必须将第二个if - 条款替换为else if

考虑一下:

输入为a。您的第一个if解散为true并使a成为大写 - &gt; A

但是,您的第二个if也会解散为true,因为A现在是大写的,因此它会再次转换为小写 - &gt; 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]);
            }
        }
    }
}