我有一个代码可以“删除”句子中连续出现多次的所有字符。例如:
“ Thiiis iiis aaa tesst”
我使用charAt()
和length()
方法(这是大学的任务,只允许使用这两种方法)。
在某种程度上,它可以正常工作,但我的问题是:
为什么我在句子结尾看到数字?谁能告诉我我的代码是否错误或在哪里错误?
这是一个测试19212325272
这是我用于此的代码:
public static String reduce(String w) {
String result = "";
for (int i = 0; i < w.length() - 1; i++) {
if(w.charAt(i) == w.charAt(i + 1)) {
w += w.length() - 1;
}
else {
result += w.charAt(i);
}
}
return result;
}
谢谢!
答案 0 :(得分:1)
这是由于w += w.length() - 1
造成的。您不需要。
修改后的代码:-
public static String reduce(String w) {
if (w == null) return null; // in case if w is NULL
String result = "";
result += w.charAt(0);
for (int i = 1; i < w.length(); i++) {
if (w.charAt(i - 1) != w.charAt(i)) {
result += w.charAt(i);
}
}
return result;
}
输出:-
Thiiis iiis aaa tesst
This is a test
答案 1 :(得分:0)
由于w += w.length() - 1
的原因,是当您将两个相同的字符添加到w
变量时,它的长度是多少。当您将其删除(并在for循环之后添加后,检查最后一个字符是否与以前的字符相同)之后,此代码也可以正常工作
答案 2 :(得分:0)
您根本不需要Codable
条件。以下程序删除重复的字符:
if