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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

有沒有辦法通過選項(xiàng)卡中的字符一個(gè)一個(gè)地更改字符串的字符?

有沒有辦法通過選項(xiàng)卡中的字符一個(gè)一個(gè)地更改字符串的字符?

呼如林 2023-05-24 14:46:49
我的主要目的是將選項(xiàng)卡中存儲(chǔ)的字符存儲(chǔ)為String相同長(zhǎng)度的字符。所以我嘗試的是使用循環(huán)和方法String用選項(xiàng)卡中相同位置的字符替換 I 在開頭聲明的每個(gè)字符。forreplace(oldChar, newChar)public static void main(String[] args) {  String card = "xxxx";  char[] code = {'0', '1', '2', '3',};  for (int i = 0; i < code.length-1; i++) {    card.replace(card.charAt(i), code[i]);  }  System.out.println(card);}我期望 的輸出0123,但是當(dāng)我運(yùn)行代碼時(shí),它顯示原始字符串值 ( xxxx),就好像for循環(huán)沒有用一樣。
查看完整描述

5 回答

?
月關(guān)寶盒

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超5個(gè)贊

我期待 0123 的輸出,但是當(dāng)我運(yùn)行代碼時(shí),它顯示原始字符串 xxxx,就好像 for 循環(huán)是無用的

在 Java 中,String 對(duì)象是不可變的。該replace方法返回一個(gè)新的 String 對(duì)象,其中包含您需要的修改。

card = card.replace(card.charAt(i), code[i]);

Ps 另外,你的for循環(huán)沒有覆蓋數(shù)組的最后一個(gè)元素。運(yùn)行它i < code.length。


查看完整回答
反對(duì) 回復(fù) 2023-05-24
?
撒科打諢

TA貢獻(xiàn)1934條經(jīng)驗(yàn) 獲得超2個(gè)贊

要將 a 轉(zhuǎn)換char[]為 a?String,請(qǐng)調(diào)用String(char[] value)構(gòu)造函數(shù):

char[] code = {'0', '1', '2', '3'};

String card = new String(code);

System.out.println(card); // prints: 0123

你的代碼永遠(yuǎn)不會(huì)工作,即使你解決了捕獲調(diào)用結(jié)果的問題replace,如其他答案中所述,因?yàn)樵诘谝淮蔚鷷r(shí)card.charAt(i)返回一個(gè)'x',所以replace(card.charAt(i), code[i])意味著replace('x', '0'),替換所有X,導(dǎo)致card = "0000".
第二次迭代:card = "1111"
第三次迭代:card = "2222"
第四次迭代:card = "3333"

如果要構(gòu)建字符串,請(qǐng)使用StringBuilder

char[] code = {'0', '1', '2', '3'};

StringBuilder buf = new StringBuilder("xxxx");

for (int i = 0; i < code.length; i++)?

? ? buf.setCharAt(i, code[i]);

String card = buf.toString();

System.out.println(card); // prints: 0123

或者:


StringBuilder buf = new StringBuilder();

for (int i = 0; i < code.length; i++)?

? ? buf.append(code[i]);


查看完整回答
反對(duì) 回復(fù) 2023-05-24
?
開滿天機(jī)

TA貢獻(xiàn)1786條經(jīng)驗(yàn) 獲得超13個(gè)贊

在 Java 中,字符串是不可變的,這意味著您無法更改它們。當(dāng)您調(diào)用它時(shí)String.replace(),它實(shí)際上返回一個(gè)新字符串,而不是修改您的舊字符串。如果您想要一個(gè)內(nèi)容與數(shù)組中的內(nèi)容類似的字符串,請(qǐng)使用 String 構(gòu)造函數(shù),card = new String(code). 然后 String 將包含數(shù)據(jù)0123。



查看完整回答
反對(duì) 回復(fù) 2023-05-24
?
慕尼黑8549860

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超11個(gè)贊

恕我直言,一種更簡(jiǎn)單的方法是使用 String 類提供的方法在一個(gè)語句中完成。


給出以下內(nèi)容:


      String card = "xxxx";

      char[] code = { '0', '1', '2', '3',

      };

你可以這樣做。


      card = String.valueOf(code) + card.substring(code.length);

      System.out.println(card);  // prints 0123

它的工作方式是。


String.valueOf(code) 將 char 數(shù)組轉(zhuǎn)換為 String。

在這種情況下,card.substring(code.length) 獲取從 4 開始的其余字符串。

然后將它們連接在一起。

如果你有一個(gè)字符串而不是一個(gè)字符數(shù)組,你可以直接使用它。


如果字符串比代碼數(shù)組長(zhǎng),此方法還會(huì)保留卡中的多余字符。


查看完整回答
反對(duì) 回復(fù) 2023-05-24
?
喵喔喔

TA貢獻(xiàn)1735條經(jīng)驗(yàn) 獲得超5個(gè)贊

你為什么這樣做code.length - 1?我的意思code.length是實(shí)際上是你需要。長(zhǎng)度從 1 in this string: 開始,到 2 in this string :。"a""ab"

所以實(shí)際上,單個(gè)字母的長(zhǎng)度code不是從 0 開始,而是從單個(gè)字母的 1 開始。長(zhǎng)度實(shí)際上code.length 不是 code.length - 1。

此外,正如其他人指出的那樣,字符串在 Java 中是不可變的。這意味著您無法更改它們。當(dāng)您String.replace()這樣做時(shí),它會(huì)返回一個(gè)新字符串而不是更改的舊字符串。

所以這是循環(huán)中的正確代碼for

for(int i = 0; i < code.length; i++){
  card = card.replace(card.charAt(i), code[i]);
}

所以在這種情況下,我改變是card因?yàn)槲覜]有使用這個(gè)replace功能本身,我實(shí)際上改變card了它的替代品。

首先,我所做的是更改cardcard.replace(card.charAt(i), code[i]). 所以我仍然保留了原始字符串但對(duì)其進(jìn)行了更改,而不是創(chuàng)建新字符串。


查看完整回答
反對(duì) 回復(fù) 2023-05-24
  • 5 回答
  • 0 關(guān)注
  • 236 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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