第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java:如何獲取字符串?dāng)?shù)組中單詞的第n個字母

Java:如何獲取字符串?dāng)?shù)組中單詞的第n個字母

青春有我 2023-05-24 17:37:47
我需要編寫一個名為 getSuccessiveLetters(words) 的靜態(tài)方法,它接受一個字符串?dāng)?shù)組并返回一個字符串。如果字符串?dāng)?shù)組是 {"hello", "world"},那么程序應(yīng)該返回“ho”?!癶”來自第一個單詞,“o”來自第二個單詞的第二個字母,依此類推。我設(shè)法獲得了 {"hello", "world"} 的正確返回值,但是如果字符串?dāng)?shù)組包含,例如,{"1st", "2nd", "3rd", "4th", "fifth"}它超出了掙扎的范圍。public class Template01 {    public static void main(String[] args) {        System.out.println(getSuccessiveLetters(new String[]{"1st", "2nd", "3rd", "4th", "fifth"}));     }public static String getSuccessiveLetters(String[] words) {    char Str[] = new char[words.length];    String successive;    for(int i = 0; i < words.length; i++){        successive = words[i];        if (i < successive.length()){              Str[i] = successive.charAt(i);        }        else        {            break;        }    }    successive = new String(Str);    return successive;}我期望返回值是 1nd,但實際輸出是 1nd\x00\x00。
查看完整描述

3 回答

?
翻閱古今

TA貢獻1780條經(jīng)驗 獲得超5個贊

發(fā)生這種情況是因為當(dāng)您初始化一個 char 數(shù)組時,它會用默認的 char 值填充該數(shù)組。
您可以在每次添加時使用StringBuilderList<Character>增加您的“陣列”。

改變

char[] str = new char[words.length];

StringBuilder str = new StringBuilder();

str[i] = successive.charAt(i);

str.append(successive.charAt(i));

然后在最后successive = str.toString();


查看完整回答
反對 回復(fù) 2023-05-24
?
HUWWW

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;

}


查看完整回答
反對 回復(fù) 2023-05-24
?
ibeautiful

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ù)


查看完整回答
反對 回復(fù) 2023-05-24
  • 3 回答
  • 0 關(guān)注
  • 262 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號