Java 字符数组值未更改为大写

Java 字符数组值未更改为大写,java,arrays,string,character,uppercase,Java,Arrays,String,Character,Uppercase,我正在编写一个程序,它接收一个字符串作为输入,并在包含下划线时更改字母的格式。例如,如果我收到字符串“here_wego”,它应该返回“hereWego”,但我得到的不是“hereWego”。我在这里尝试的是将传入字符串转换为字符数组,然后检查每个字符是否为下划线。如果不是下划线,则将该字符添加到输出字符串中。如果是下划线,则不添加字符,而应将c[i+1]改为大写,以便在下一个迭代器中添加 public static String zebulansNightmare(final String f

我正在编写一个程序,它接收一个字符串作为输入,并在包含下划线时更改字母的格式。例如,如果我收到字符串“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;
}
public静态字符串zebulansmreammary(最终字符串函数名){
字符串manip=“”;
char[]c=functionName.toCharArray();
for(int i=0;i
我已经包含了一个链接,指向调试过程的图片


这应该可以做到:

    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;
}
public静态字符串zebulansmreammary(最终字符串函数名){
字符串manip=“”;
char[]c=functionName.toCharArray();
for(int i=0;i
查看i count
i++在我执行
c[i+1]之前。另外,
manip+=
用于添加大写字符


如果不使用
i++
,但是您只使用
c[i+1]
您的输出将是:HerewGeo,而不是HerewGo@AndyTurner,谢谢,我没有意识到它刚刚返回了大写字符。我相应地更改了代码并修复了它:

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

现在,我得到了正确的输出,尽管如果字符串是“here_3;”

Character.toUpperCase(c[I+1]),它会抛出异常
实际上没有改变
c[i+1]
:它只是返回大写的
char
。另外,更改调用
String.tocharray()
产生的
char[]
不会更改字符串。您需要
返回新字符串(c)
char
是一个原语-这使得它不可变
Character.toUpperCase(c[i+1])
返回一个新的
char
字符,它是传入的
char
的大写版本-您放弃它。@而且我相信OP希望将一些大小写字符串更改为大写字符串。