3 回答

TA貢獻1780條經(jīng)驗 獲得超5個贊
發(fā)生這種情況是因為當(dāng)您初始化一個 char 數(shù)組時,它會用默認的 char 值填充該數(shù)組。
您可以在每次添加時使用StringBuilder
或List<Character>
增加您的“陣列”。
改變
char[] str = new char[words.length];
到
StringBuilder str = new StringBuilder();
和
str[i] = successive.charAt(i);
到
str.append(successive.charAt(i));
然后在最后successive = str.toString();
。

TA貢獻1874條經(jīng)驗 獲得超12個贊
這是因為當(dāng)您忽略原始數(shù)組中不夠長的字符串時,您并沒有因此設(shè)置一些 char 數(shù)組元素。這意味著某些元素char的值為\0(默認值為char)。因此,生成的字符串\0也有這些額外的字符。
我認為在這里使用 aStringBuilder而不是 a更合適char[]:
public static String getSuccessiveLetters(String[] words) {
StringBuilder builder = new StringBuilder();
String successive;
for(int i = 0; i < words.length; i++){
successive = words[i];
if (i < successive.length()){
builder.append(successive.charAt(i));
}
// you should not break here, because there might be a longer string in the array later on.
// but apparently you don't want the "h" in "fifth"? Then I guess you should break here.
}
successive = builder.toString();
return successive;
}

TA貢獻1993條經(jīng)驗 獲得超6個贊
我建議在這里使用單元測試。這可以幫助您改進。
您正在此處創(chuàng)建一個 charArray:
char Str[] = new char[words.length];
這個數(shù)組有你的字符串?dāng)?shù)組的長度
new String[]{"1st", "2nd", "3rd", "4th", "fifth"}
這是 5
你為你的新數(shù)組創(chuàng)建了 3 個條目(因為你在第一個單詞處中斷,太短了)因此你得到 3 個字母“1nd”,并且你的數(shù)組中的其他 2 個插槽在調(diào)用時填充了空白
successive = new String(Str);
第一個:考慮 break 語句第二個:考慮使用 StringBuilder / StringBuffer 而不是 char[] 進行匹配
恕我直言,最正確的結(jié)果應(yīng)該是1nd h - 但這取決于你給定的任務(wù)
添加回答
舉報