用頓號(hào)將若干個(gè)字符串分隔開































posted on 2007-02-27 08:20 我為J狂 閱讀(2739) 評(píng)論(15) 編輯 收藏 所屬分類: Java算法
posted on 2007-02-27 08:20 我為J狂 閱讀(2739) 評(píng)論(15) 編輯 收藏 所屬分類: Java算法
if ( ! word.equals( "" ))
最好改為!"".equals(word)
因?yàn)槿绻鹷ord在前的話很容易引起nullPoint異常 回復(fù) 更多評(píng)論
真是金玉良言,我會(huì)在以后的開發(fā)過程中加以改進(jìn)的。 回復(fù) 更多評(píng)論
其實(shí)要認(rèn)省點(diǎn)代碼。這樣就不用比較NULL了。
for ( int i = 0 ;i < words.length-1;i ++ ) 回復(fù) 更多評(píng)論
別在循環(huán)里用+號(hào)哦 回復(fù) 更多評(píng)論
“永恒之光”的方法真妙!以上的程序改為:
String[] words = { " a " , " b " , " c " } ;
String word = "" ;
int i=0;
for ( i = 0 ;i < words.length-1;i ++ )
{
word+=words[i]+" 、 ";
}
word +=words[i];
不但節(jié)省了代碼,而且不用比較NULL了。
對于 Lingo提出的問題“別在循環(huán)里用+號(hào)”,我不知道其中的原因,請Lingo解釋一下,謝謝。 回復(fù) 更多評(píng)論
不用+ 的話,就不要用String了,只好用StringBuffer咯
回復(fù) 更多評(píng)論
是不是將程序改成這樣?
String[] words = { " a " , " b " , " c " } ;
StringBuffer word =new StringBuffer("");
int i=0;
for ( i = 0 ;i < words.length-1;i ++ )
{
word=word.append(new StringBuffer(words[i]).append(" 、 "));
}
word=word.append(words[i]);
如果這樣寫,代碼的可讀性降低,很不好理解。
我想Lingo提出“別在循環(huán)里用+號(hào)”另有涵義。 回復(fù) 更多評(píng)論
String[] words = { " a ", " b ", " c " };
StringBuffer word = new StringBuffer("");
int i = 0;
for (i = 0; i < words.length - 1; i++) {
word.append(words[i]).append("、");
}
word.append(words[i]);
這樣不可以嗎?? 回復(fù) 更多評(píng)論
呵呵,是我將程序?qū)憦?fù)雜了,見笑了。 回復(fù) 更多評(píng)論
@我為J狂
Equals的時(shí)候盡量用"內(nèi)容"開頭,這樣不用判斷空
正如Lingo說的不要在循環(huán)中使用字符串的+,因?yàn)樽址欠强勺兊膶ο螅褂?基本上等于new StringBuffer() apend() apend() toString。比直接使用StringBuffer多了一次new,如果寫在循環(huán)中會(huì)很大程度降低效率。
如果是Jdk1.5可以在StringBuilder和StringBuffer之間選擇一下,原因可以看看這里http://www.aygfsteel.com/dreamstone/archive/2006/10/17/75608.html 回復(fù) 更多評(píng)論
@我為J狂
int i = 0;
for (i = 0; i < words.length - 1; i++) {
word.append(words[i]).append("、");
}
這種寫法不太好,呵呵。因?yàn)槿菀追笍?fù)制粘鐵錯(cuò)誤,如出現(xiàn)
等同于for 循環(huán)的迭代好于while循環(huán)
這樣比較好點(diǎn)。
for (int i = 0; i < words.length - 1; i++) {
word.append(words[i]).append("、");
}
回復(fù) 更多評(píng)論
另外關(guān)于分割的情況,如果使用、分割有的時(shí)候會(huì)有些限制,比如用戶恰好輸入了、,這個(gè)時(shí)候需要轉(zhuǎn)義,是挺麻煩的事情,有個(gè)解決方案是這樣,可以使用用戶不可能輸入的字符來分割,例如(char)1 看上去就是個(gè)亂碼,呵呵
你的表真有意思,剛才正好23:00,一頓響,嚇了我一跳一以為中病毒了。 回復(fù) 更多評(píng)論
@dreamstone
寫成您說的那樣更改:
for (int i = 0; i < words.length - 1; i++) {
word.append(words[i]).append("、");
}
那么我最后一行的代碼:word.append(words[i]);
其中的變量i就沒有定義了,顯然是不行的。
對于您提出的粘貼錯(cuò)誤問題我能理解;我舉例說明一下,
//代碼1
for(Iterator it=list.iterator();it.hasNext();)
{
}
//代碼2
Iterator it=list.iterator();
while(it.hasNext())
{
}
對于以上兩段代碼,代碼1發(fā)生粘貼錯(cuò)誤的幾率要遠(yuǎn)遠(yuǎn)小于代碼2。 回復(fù) 更多評(píng)論
那就這么寫吧
for (int i = 0; i < words.length; i++) {
if(i != 0){
world.append("、");
}
word.append(words[i]);
}
回復(fù) 更多評(píng)論
@slx
哈哈,到目前為止,您的方法最棒!謝謝。 回復(fù) 更多評(píng)論
只有注冊用戶登錄后才能發(fā)表評(píng)論。 | ||
![]() |
||
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
|
||
相關(guān)文章:
|
||