Java 没有编译器错误,但它没有';不要改变字符串
我正试图编写一个程序,改变字符串中两个字符的大小写(将大写改为小写,反之亦然)。它已编译,但字符串是相同的Java 没有编译器错误,但它没有';不要改变字符串,java,Java,我正试图编写一个程序,改变字符串中两个字符的大小写(将大写改为小写,反之亦然)。它已编译,但字符串是相同的 String newChar1 = caseChanger("DcoderIsCool", 3); String newChar2 = caseChanger("DcoderIsCool", 8); 我认为问题在于我使用的方法: public static String caseChanger (String s, int ind) { if(!(Character.isU
String newChar1 = caseChanger("DcoderIsCool", 3);
String newChar2 = caseChanger("DcoderIsCool", 8);
我认为问题在于我使用的方法:
public static String caseChanger (String s, int ind) {
if(!(Character.isUpperCase(s.charAt(ind)))) {
//checking if the character is uppercase or lowercase
return s.substring(ind, ind + 1).toLowerCase();
} else {
return s.substring(ind, ind + 1).toUpperCase();
}
}
输出应该是“dcodericool”,但它是“dcodericool”(原始字符串)。我想这就是您要查找的内容
public static String caseChanger (String s, int ind) {
if((Character.isUpperCase(s.charAt(ind)))) { //checking if the character is uppercase or lowercase
return new StringBuilder(s).replace(ind,ind+1,s.substring(ind, ind + 1).toLowerCase()).toString();
}
else {
return new StringBuilder(s).replace(ind,ind+1,s.substring(ind, ind + 1).toUpperCase()).toString(); }
}
因此,您只更改了n个字符,并将更改后的字符返回到额外的not旁边!你正在添加的意思是如果你的条件是相反的。但您要寻找的是在原始字符串中所需的位置替换字符。如果我没弄错的话。
希望对你有所帮助希望我正确理解了你的问题 下面的代码将为您提供输出
dcodericool
和dcodericool
public static String caseChanger(String s, int ind) {
char[] charArr = s.toCharArray();
if (!(Character.isUpperCase(s.charAt(ind)))) {
charArr[ind] = Character.toUpperCase(s.charAt(ind));
} else {
charArr[ind] = Character.toLowerCase(s.charAt(ind));
}
return String.valueOf(charArr);
}
您从字符串中提取了字符,但未将其放回字符串中 s、 子字符串(ind,ind+1).toLowerCase()应用于单个字符 而是返回s.substring(ind,ind+1).toLowerCase()
将CaseChanged字符替换回原始字符串。调用函数的代码部分在哪里?另外,假设“errors”是指“compiler errors”,则“There no errors”是一个较低的清除条。您还需要检查编译器不知道的逻辑错误。检查您的条件:如果字符不是大写,则将其转换为小写。这似乎不对…如果(!大写)返回小写?谢谢!正如建议的那样,我删除了“!”并且它现在可以工作了,但是您的代码更直接,因此我还将更改返回语句:)使用StringBuilder,而不是StringBuffer。StringBuffer强制每个方法都有同步开销,这在单线程逻辑中没有好处,即使在多线程逻辑中也很少有好处。