PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

  回應
 
主題工具
Tirpitz
Master Member
 
Tirpitz的大頭照
 

加入日期: Apr 2001
您的住址: Coruscant
文章: 1,637
引用:
Originally posted by harrisonlin
先給你個腦力激盪的機會 - 如果你不急著交作業的話:

先想辦法分割一個字串,以"非 a-z 和 A-Z" 的字元為分界,再個別存起來,例如你舉的例子:

Hi~ what's your name?

切割成:

["Hi", "~", " ", "what", "'", "s", "your", " ", "name", "?"] <-- 這裡我以陣列表示


嗯∼可能真的我想的太複雜了。
因為原來從範例修改使用很多while∼快100行了。
看到token這麼好用就用啦。好像走向不歸路...

我突然發現我雖然把程式碼變短了
但是我不知道該如何去區別一串字母和一串符號...
這才是基本的核心所在吧∼
我不用ascii code了。看到[a-zA-Z0-9]想到regular express。
請各位高手再提示一下吧。(今天已經coding10多小時了,真是廢...不過是個小題目)
     
      
__________________
Un Jedi ne doit connaitre ni la colere, ni la haine, ni l'amour.
Someday I will be the most powerful Jedi ever~!!

Jedi Code
there is no emotion;there is the peace
there is no ignorance;there is the knowledge
there is no passion;there is the serenity
there is no death;there is the Force
舊 2004-05-15, 01:27 AM #11
回應時引用此文章
Tirpitz離線中  
prescott
Regular Member
 
prescott的大頭照
 

加入日期: Nov 2000
文章: 78
我也不是高手,因為我通常還是在新手區發問問題.
下面的code是我剛剛試的想法.比樓主的Code只多了Method觀念.
沒有註解因為時間晚.所以也沒去考慮其它的Supression Pattern.


import java.util.*;

public class ReverseString {

private StringBuffer tokenizedStr = null;

public ReverseString() {
tokenizedStr = new StringBuffer();
}

private void tokenizeIt(String name) {
StringTokenizer tokener = new StringTokenizer(name, " ");
while (tokener.hasMoreTokens()) {
tokenizedStr.append(reverseEachToken(tokener.nextToken()));
tokenizedStr.append(" ");
}
}//End tokenizeIt()

public String reverseEachToken(String str) {
StringBuffer strBuf = new StringBuffer(str);
int index = 0;
boolean isletter = true;
char letter;
while (isletter && index < strBuf.length()) {
letter = strBuf.charAt(index);
if (('A' <= letter && letter <= 'Z') || ('a' <= letter && letter <= 'z') || letter == '-' || letter == '"') {
index++;
} else {
isletter = false;
}
}
StringBuffer strBufTMP = new StringBuffer(strBuf.substring(0, index));
strBufTMP.reverse();
strBuf.replace(0, index, strBufTMP.toString());
strBufTMP = null;
return strBuf.toString();
}//End reverseEachToken()

public static void main(String[] args) {
ReverseString rs = new ReverseString();
rs.tokenizeIt("Hi~ what's your name?");
rs.tokenizeIt("hello!! I'm Prescott");
rs.tokenizeIt("And, how the word \"UNIX-Like\"?");
System.out.println(rs.tokenizedStr.toString());
}
}// End main()
 

此文章於 2004-05-15 03:14 AM 被 prescott 編輯.
舊 2004-05-15, 02:57 AM #12
回應時引用此文章
prescott離線中  
ecafder
Advance Member
 
ecafder的大頭照
 

加入日期: Aug 2003
您的住址: 丟臉丟到家
文章: 441
java collection package裡面有一個Stack物件,拿來用用看。
情況1:需反轉字元,才push資料入Stack裡面,如:遇到H, i, y, x
情況2:非反轉字元,從Stack裡面pop資料出來,如:遇到~, 空格, ', ?

輸入:Hi~ what's your name?
----------------------------
遇到H →把H送入Stack
遇到i →把i送入Stack
遇到~ →Stack裡面有資料都先pop出來輸出,再輸出~
輸出結果:iH~

遇到空格 →Stack裡面有資料都先pop出來輸出,再輸出空格
輸出結果:iH~空格

遇到w →把w送入Stack
遇到h →把h送入Stack
遇到a →把a送入Stack
遇到t →把t送入Stack
遇到' →Stack裡面有資料都先pop出來輸出,再輸出'
輸出結果:iH~空格tahw'

遇到s →把s送入Stack
遇到空格 →Stack裡面有資料都先pop出來輸出,再輸出空格
輸出結果:iH~空格tahw's空格

遇到y →把y送入Stack
遇到o →把o送入Stack
遇到u →把u送入Stack
遇到r →把r送入Stack
遇到空格 →Stack裡面有資料都先pop出來輸出,再輸出空格
輸出結果:iH~空格tahw'[color=sky blue]s[/color]空格ruoy空格

遇到n →把n送入Stack
遇到a →把a送入Stack
遇到m →把m送入Stack
遇到e →把e送入Stack
遇到? →Stack裡面有資料都先pop出來輸出,再輸出?
輸出結果:iH~空格tahw'[color=sky blue]s[/color]空格ruoy空格eman?

----------------------------
輸出:iH~ tahw's ruoy eman?
舊 2004-05-15, 03:07 AM #13
回應時引用此文章
ecafder離線中  
Rhoads
*停權中*
 
Rhoads的大頭照
 

加入日期: Jun 2001
文章: 989
我也寫一個~真的不要想的太複雜~
import javax.swing.*;
class re {
public static void main( String args[] ){
String s1 = JOptionPane.showInputDialog("請輸入字串")+" " ;
System.out.println(s1);
char s[] = s1.toCharArray() , q;
StringBuffer sb = new StringBuffer();
for (int i=0 ; i<s.length; i++){
q=s[i];
if( ((int)q>=65&&(int)q<=90)||((int)q>=97&&(int)q<=122) ) {
sb.append(String.valueOf(q)); }
else{
System.out.print(sb.reverse());
System.out.print(String.valueOf(q));
sb = new StringBuffer();
}
}
System.exit(0);
}
}

此文章於 2004-05-15 03:44 AM 被 Rhoads 編輯.
舊 2004-05-15, 03:20 AM #14
回應時引用此文章
Rhoads離線中  
該死的怪咖
*停權中*
 

加入日期: Sep 2003
文章: 59
...
舊 2004-05-15, 03:40 AM #15
回應時引用此文章
該死的怪咖離線中  
亦藍亦紫
Regular Member
 
亦藍亦紫的大頭照
 

加入日期: Oct 2000
您的住址: 高雄
文章: 77
用stack來做的話,會很方便,只要讀到空白或'這樣就pop出來前面的部分
然後再反轉字串就行了= =
__________________
宅男學生 轉型 宅男工程師 成功
宅男工程師 轉型 宅男分析師 失敗
舊 2004-05-15, 05:21 AM #16
回應時引用此文章
亦藍亦紫離線中  
wei836500
Advance Member
 
wei836500的大頭照
 

加入日期: Mar 2002
您的住址: 台灣
文章: 471
引用:
Originally posted by Tirpitz
嗯,感謝你的意見呀。

之前也有人跟我提到這個方法。
你隨便想想就想到了耶。超強的∼真是佩服。
不過,ㄟ....取substring,有點模糊。
因為不光是" ' "這符號,這是我想出來的範例。
所有的標點都不可以動。想用ascii code處理。

所以,現在先不管之前的程式了。
我先想一個可以處理文字和符號的就行了。
簡化一下問題。

我做好了會po出全部的code,以後有人需要可以參考啦。
(搞不好有高手在旁偷笑唷∼... )


寫程式我從不相信有所謂的高手!!高手在我眼中的定義是比別人多練習很多所以比較
會寫而已!!
如果先把原來的字用for依序讀入若不是空白也不是「'」便存在同一個陣列,若遇空
白或是[' ]便自已存在一個陣列最後再用一個for把各陣列倒反再組合印出(好像和上
面一位大大的想法不會差很多)
__________________
人生中有太多的選擇題,你能做最好的選擇嗎?
舊 2004-05-15, 12:47 PM #17
回應時引用此文章
wei836500離線中  
Tirpitz
Master Member
 
Tirpitz的大頭照
 

加入日期: Apr 2001
您的住址: Coruscant
文章: 1,637
引用:
Originally posted by prescott
我也不是高手,因為我通常還是在新手區發問問題.
下面的code是我剛剛試的想法.比樓主的Code只多了Method觀念.
沒有註解因為時間晚.所以也沒去考慮其它的Supression Pattern.


這個有點問題唷∼呵呵
UNIX-Like出來要XINU-ekiL唷。
上面的我只是舉例而以。

另外,Stack我沒有印像學過耶。

感謝各路好手蒞臨指教。我會仔細參考的。
你們熱情的協助,讓小弟感激不盡。
陣列的作法好像比較簡單,不過我還沒學到,要想一想唷∼

方便的話,順便推薦一下幾本中文JAVA好書好了。
我現在是抱著一本蠢原文書猛看∼還有吸收各位的想法及作法。
__________________
Un Jedi ne doit connaitre ni la colere, ni la haine, ni l'amour.
Someday I will be the most powerful Jedi ever~!!

Jedi Code
there is no emotion;there is the peace
there is no ignorance;there is the knowledge
there is no passion;there is the serenity
there is no death;there is the Force
舊 2004-05-15, 04:07 PM #18
回應時引用此文章
Tirpitz離線中  
Rhoads
*停權中*
 
Rhoads的大頭照
 

加入日期: Jun 2001
文章: 989
引用:
Originally posted by wei836500
寫程式我從不相信有所謂的高手!!高手在我眼中的定義是比別人多練習很多所以比較
會寫而已!!

你所謂的高手是寫作業的高手嗎?...
別把太瞧不起高手囉
你為程式有那麼簡單嗎.程式最基板就是資料結構 離散數學 演算法
很明顯的,樓主顯然沒學過資料結構.
你沒學過這些東西,買一本快快樂樂學程式你真的會寫程式嗎?
不過是Garbage in Garbage out而已 , 就像樓主簡單的問題可以想到上百行
這一題作業有學過資料結構的用stack就可以輕鬆搞定了.
根本用不到reverse這種函數,(我還是用樓主的觀念去寫....慚愧)
更不要說那些線性代數,圖學...@#$%!$的理論了

很多人因為自己沒興趣不花工夫去K.
就認為其他比你強的人不過是多花點時間做習題而已...
這種人很多,我很不削這種人.有些東西你花同樣的時間去K
你也頂多寫的出跟習題差不多的東西.然後跟真正的高手比.
你跟他寫的東西一定不一樣..我說明白點,程式真的是要靠天份的
那些大師真的都是屬於天才級的,甚至不削做習題,
就可以想出別人想不出來的演算法,然後玩出新的東西.

資訊產業為什麼會進步的那麼迅速?因為太多高手了
你永遠都在玩高手玩過的東西..除非你變成高手,為資訊產業貢獻一些有用的東西
不然不要認為別人只是只寫程式寫的比別人多的人...人生應該花在更美好的事物上
然後就等著被高手玩膩的東西淘汰掉 除非你不吃這行
要不然就謙虛點...不然就是還沒遇到真正的高手吧
我老師說其實台灣高手已經很少了..它出國留學才真正見識到什麼是高手,天才
眼光要宏觀一點

此文章於 2004-05-15 05:03 PM 被 Rhoads 編輯.
舊 2004-05-15, 04:58 PM #19
回應時引用此文章
Rhoads離線中  
wei836500
Advance Member
 
wei836500的大頭照
 

加入日期: Mar 2002
您的住址: 台灣
文章: 471
引用:
Originally posted by Rhoads
你所謂的高手是寫作業的高手嗎?...
別把太瞧不起高手囉
你為程式有那麼簡單嗎.程式最基板就是資料結構 離散數學 演算法
很明顯的,樓主顯然沒學過資料結構.
你沒學過這些東西,買一本快快樂樂學程式你真的會寫程式嗎?
不過是Garbage in Garbage out而已 , 就像樓主簡單的問題可以想到上百行
這一題作業有學過資料結構的用stack就可以輕鬆搞定了.
根本用不到reverse這種函數,(我還是用樓主的觀念去寫....慚愧)
更不要說那些線性代數,圖學...@#$%!$的理論了

很多人因為自己沒興趣不花工夫去K.
就認為其他比你強的人不過是多花點時間做習題而已...
這種人很多,我很不削這種人.有些東西你花同樣的時間去K
你也頂多寫的出跟習題差不多的東西.然後跟真正的高手比.
你跟他寫的東西一定不一樣..我說明白點,程式真的是要靠天份的
那些大師真的都是屬於天才級的,甚至不削做習題,
就可以想出別人想不出來的演算法,然後玩出新的東西.

資訊產業為什麼會進步的那麼迅速?因為太多高手了
你永遠都在玩高手玩過的東西..除非你變成高手,為資訊產業貢獻一些有用的東西
不然不要認為別人只是只寫程式寫的比別人多的人...人生應該花在更美好的事物上
然後就等著被高手玩膩的東西淘汰掉 除非你不吃這行
要不然就謙虛點...不然就是還沒遇到真正的高手吧
我老師說其實台灣高手已經很少了..它出國留學才真正見識到什麼是高手,天才
眼光要宏觀一點


哈~~你誤會我的意思!!我的意思最主要是強調還是要多練習,就算他有高手的料但
他不動他不寫哪知道他自已是高手?只是想說多多練習是很重要的而已別想太多,我
沒打的很清楚讓您誤解啦!!不是沒高手只是勤能補拙而已
__________________
人生中有太多的選擇題,你能做最好的選擇嗎?
舊 2004-05-15, 05:12 PM #20
回應時引用此文章
wei836500離線中  


    回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是11:19 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。