我正在编写一个接收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;
}
我已经包含了调试过程图片的链接。
答案 0 :(得分:3)
这应该可以解决问题:
c[i+1] = Character.toUpperCase(c[i+1]);
答案 1 :(得分:0)
试试这个
} else {
manip += Character.toUpperCase(c[i+1]);
i++;
}
而不是
} else {
Character.toUpperCase(c[i+1]);
}
答案 2 :(得分:0)
您的代码未实现最佳化。
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
答案 3 :(得分:0)
@AndyTurner,谢谢我没有意识到它只是以大写字母返回了字符。我相应地更改了我的代码并修复了它:
if(c[i]!='_'){
manip += c[i];
} else {
manip += Character.toUpperCase(c[i+1]);
i++;
}
现在我得到正确的输出,但如果String是“here _”
,它会抛出异常