為什么一直不能通過?
我真的是找不出問題了,為什么不能通過呀?
public class HelloWorld {
? ? public static void main(String[] args) {
// 創(chuàng)建一個空的StringBuilder對象
StringBuilder str=new StringBuilder();
? ? ? ??
// 追加字符串
str.append("jaewkjldfxmopzdm");
? ? ? ? // 從后往前每隔三位插入逗號
? ? ? ? for(int i=str.length()-1 ; i >=0 i=i-3 ){ ? ? ? ? ? ? ? ? ? ?
? ? ? ?
? ? ? ? ? ? str.insert(i,",");
? ? ? ??
? ? ? ? // 將StringBuilder對象轉(zhuǎn)換為String對象并輸出
System.out.print(str.toString());
}
}
2016-12-12
你這是for循環(huán)那里沒有學(xué)好。
for(變量初始化值,條件,變量如何變化的)這是循環(huán)的三個條件
這道題要求的是對字符串倒著插入‘,’號,那我們就得把字符串倒著循環(huán)輸出就可以了。如歌題中要求是正著插入‘,’號,那我們就把字符串正著循環(huán)輸出就可以。
總結(jié),也就是要求倒著對字符串操作,我們就先倒著循環(huán)輸出字符串。反之,同理
那這道題中,要求是對字符串倒著并且每隔三位插入一個逗號
對字符串倒著循環(huán)輸出
定義變量初始化值,首先int i=str.length()指的是變量i的值為字符串的長度。那樣int i=str.length()-3指的就是變量i的值為字符串倒數(shù)第三的位置
條件。也就是變量i需要循環(huán)到什么時候停下來。那就是當(dāng)i=1的時候要停下來,也就是i>0;因?yàn)樽址拈L度是從1開始的不能為0
變量是咋變化的。這個是根據(jù)題目要求而定。題中要求我們倒著每隔三位插入一個逗號,上面提到第一個插入逗號的位置是在str.length()-3這個位置,那第二次插入的位置就應(yīng)該是i-6.也就是i的值在上一次的基礎(chǔ)上減去3.所以變量i=i-3,也就是每次都減少3
2016-12-01
字符串的末尾本來就沒讓你有逗號。必須int i=str.length()-3或者直接int i=13;可以i-=3也可以i=i-3
2016-11-21
? ?? for循環(huán)錯了,改為 for(int i=str.length()-3 ; i >=0 i=i-3 )就可以了,這樣初始就是從后數(shù)3位出加,號
2016-11-19
蟈蟈前來回答!
首先粘貼正確代碼:
StringBuilder str=new StringBuilder();
str.append("jaewkjldfxmopzdm");
? ? ? ?for(int i=str.length() ; i >0; i=i-3 ){ ? ? ? ? ? ? ? ? ??
? ? ? ? ? ?str.insert(i,",");
? ? ? ?}
System.out.print(str.toString());
我認(rèn)為前面的回答:
在循環(huán)前先int n=str.length();for(int i=n-3;i>=0;i=i-3)
是不對的,因?yàn)閯傞_始下標(biāo)就減3,那么字符串的末尾就不會有逗號了。
這里應(yīng)該注意,第一次插入位置應(yīng)該是str.length(),而不是str,length() - 1; 而最后的插入位置必須大于0,也就是不能插入到字符串的頭部!
其實(shí)這道題目比較有意思,因?yàn)樵诓迦脒^程中字符串的長度其實(shí)是一直在變化的,但是我們并沒有處理這個情況,而結(jié)果也是正確的。但如果要求從前往后每隔3個位置插入,那么套用之前的循環(huán)代碼就會出錯(可以思考一下原因是為什么)。我覺得慕課這樣出題應(yīng)該是在降低題目的難度。
2016-11-10
那個循環(huán)你寫錯了吧,str.length長度在運(yùn)行后是變化的。在循環(huán)前先int n=str.length();
for(int i=n-3;i>=0;i=i-3)