繁体   English   中英

char数组值未更改为大写

[英]char array value not being changed to upper case

我正在编写一个程序,它接收一个String作为输入,并改变字体的格式,如果它包含下划线。 例如,如果我收到字符串“here_wego”,它应该返回“hereWego”,但是我只是得到“herewego”。 我在这里尝试做的是将传入的字符串转换为字符数组,然后检查每个字符以检查它是否是下划线。 如果它不是下划线,则该字符将添加到输出字符串中。 如果它下划线,则不添加该字符,而应将c [i + 1]更改为大写,以便可以将其添加到下一个迭代器中。

public static String zebulansNightmare(final String functionName) {

    String manip = "";
    char[] c = functionName.toCharArray();

    for(int i = 0; i < c.length; i++){
        if(c[i]!='_'){
            manip += c[i];
        } else {
            Character.toUpperCase(c[i+1]);
        }
    }

    return manip;
}

我已经包含了一个调试过程图片的链接。

通过程序调试

这应该做的伎俩:

    c[i+1] = Character.toUpperCase(c[i+1]);

尝试这个

} else {
           manip += Character.toUpperCase(c[i+1]);
           i++;
        }

代替

} else {
           Character.toUpperCase(c[i+1]);

        }

您的代码没有最优化。

public static String zebulansNightmare(final String functionName) {

    String manip = "";
    char[] c = functionName.toCharArray();

    for(int i = 0; i < c.length; i++){
        if (c[i] != '_'){
            manip += c[i];
        } else {
            i++;
            manip += Character.toUpperCase(c[i]);
        }
    }
    return manip;
}

看到我算i++; 在我做c[i+1]; 另外, manip +=用于以大写形式添加char!

如果你不使用i++; ,但你只使用c[i+1]你的outpur将是: hereWwego ,而不是hereWego

@AndyTurner,谢谢我没有意识到它只是以大写字母返回了字符。 我相应地更改了我的代码并修复了它:

if(c[i]!='_'){
            manip += c[i];
        } else {
            manip += Character.toUpperCase(c[i+1]);
            i++;
        }

现在我得到了正确的输出,但如果String是“here_”会抛出异常

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM