Discussion:
[問題] 關於用迴圈補0
(时间太久无法回复)
流光
2007-05-19 13:43:09 UTC
Permalink
想請教一下板上的大大
以下為何會發生那樣情況(不知是否我考慮不周還是太笨了...)
就是我先告一個陣列 想將陣列內的String補成一樣長度
但是就是會有問題

String sb[]={"101","1","1010","111","1","101","100","11"};

for(int i=0;i<sb.length;i++)
{
if(sb[i].length()<4)
{
for(int j=0;j<4-sb[i].length();j++)
{
sb[i]='0'+sb[i];
}

System.out.print(sb[i]+"\b"+sb[i].length()+"\n");
}

結果這樣印出來是

0101 4
001 3
1010 4
0111 4
001 3
0101 4
0100 4
011 3

想請問為什麼無法都補成一樣長度??


--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.210.187
小安
2007-05-19 13:57:26 UTC
Permalink
※ 引述《ossetepokimo (流光)》之銘言:
: 想請教一下板上的大大
: 以下為何會發生那樣情況(不知是否我考慮不周還是太笨了...)
: 就是我先告一個陣列 想將陣列內的String補成一樣長度
: 但是就是會有問題
: String sb[]={"101","1","1010","111","1","101","100","11"};
: for(int i=0;i<sb.length;i++)
: {
: if(sb[i].length()<4)
: {
: for(int j=0;j<4-sb[i].length();j++)
^^^^^^^^^ 這邊有問題
注意 sb[i] 的值會一直增加喔
: {
: sb[i]='0'+sb[i];

如果確定都是數字的話,善用 Format String 應該是個不錯的選擇

String.format("%04d", intValue);

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 220.131.65.163
c***@kkcity.com.tw
2007-05-19 19:27:07 UTC
Permalink
Post by 流光
想請教一下板上的大大
以下為何會發生那樣情況(不知是否我考慮不周還是太笨了...)
就是我先告一個陣列 想將陣列內的String補成一樣長度
但是就是會有問題
String sb[]={"101","1","1010","111","1","101","100","11"};
for(int i=0;i<sb.length;i++)
{
if(sb[i].length()<4)
{
int l=sb[i].length(); <--宣告一個變數來放字串的長度

for(int j=0;j<4-l;j++) <--改成4減變數l,則不會因為下一行的替換,而
改變字串"原始"長度,當你字串長度為1位或2
位數,你的迴圈都少跑了
Post by 流光
{
sb[i]='0'+sb[i];
}
System.out.print(sb[i]+" "+sb[i].length()+"\n"); <--改成+" "試試
}
Post by 流光
}
結果這樣印出來是
0101 4
001 3
1010 4
0111 4
001 3
0101 4
0100 4
011 3
想請問為什麼無法都補成一樣長度??
--
┌─────◆KKCITY◆─────┐ ◢ ◤ 聽 KKBOX,動態歌詞緊緊跟著你
│ bbs.kkcity.com.tw │ \^_^ /  ★ http://www.kkbox.com.tw ★
└──《From:220.138.54.36 》──┘   ◤ 唱片公司授權,音樂盡情下載
--

继续阅读narkive:
Loading...