Java中是否存在将大写转换为小写的问题(可能是内存位置问题吗?)

问题描述 投票:0回答:1

我正在编写一个程序,它将命名转换为标准命名约定。例如,(aLeX teReNce = Alex Terence)和另一个示例,(kImBerLy tAn> Kimberly Tan)我已经成功转换了它,但是在进行比较时,该程序将失败。请问这里有什么问题?还有其他解决方法吗?除了toUpper和toLower以外,还有其他方法吗?谢谢!

    public static void main(String args[])
    {
        String searchName = "aLeX teReNce";

        String[] str = searchName.split(" ");

        searchName = "";

        for(int i = 0; i < str.length; i++)
        {
            searchName += toUpper(str[i].charAt(0));

            for(int j = 1; j < str[i].length(); j++)
            {
                searchName += toLower(str[i].charAt(j));
            }

            searchName += " ";
        }

        searchName = searchName.trim();

        System.out.println("After Rearrange: " + searchName);
        System.out.println();

        if(searchName.equals("Alex Terence"))
        {
            System.out.println("True");
        }

    }

    public static char toUpper(char upper)
    {
        if(!(upper > 'A' && upper < 'Z'))
        {
            upper = (char)((int)(upper) - 32);
        }

        return upper;
    }

    public static char toLower(char lower)
    {
        if(!(lower > 'a' && lower < 'z'))
        { 
            lower = (char)((int)(lower) + 32);
        }

        return lower;
    }
java sorting heap-memory uppercase lowercase
1个回答
0
投票

这是由于末尾有空白。在完成Terrance的内部for循环后,它将在末尾添加一个额外的空格。因此您的字符串是"Alex Terrance "而不是"Alex Terrance"在外部for循环之后,像这样修剪字符串以删除结尾的空格。

searchName = searchName.trim()

首先防止这种情况发生的另一种方法是使用String类的静态join()方法。

public static void main(String args[])
    {
        String searchName = "aLeX teReNce";

        String[] str = searchName.split(" ");

        searchName = "";

        for(int i = 0; i < str.length; i++)
        {
            searchName += toUpper(str[i].charAt(0));

            for(int j = 1; j < str[i].length(); j++)
            {
                searchName += toLower(str[i].charAt(j));
            }

            str[i] = searchName;
        }

        searchName = String.join(" ", str);
        System.out.println("After Rearrange: " + searchName);
        System.out.println();

        if(searchName.equals("Alex Terence"))
        {
            System.out.println("True");
        }

    }
© www.soinside.com 2019 - 2024. All rights reserved.