![]() |
||
|
Master Member
![]() ![]() ![]() ![]() 加入日期: Apr 2001 您的住址: Coruscant
文章: 1,637
|
引用:
嗯∼可能真的我想的太複雜了。 因為原來從範例修改使用很多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 |
||||||||
|
|
|
Regular Member
![]() ![]() 加入日期: 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 編輯. |
||
|
|
|
Advance Member
![]() ![]() 加入日期: 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? |
|
|
|
*停權中*
加入日期: 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 編輯. |
|
|
|
*停權中*
加入日期: Sep 2003
文章: 59
|
...
|
|
|
|
Regular Member
![]() ![]() 加入日期: Oct 2000 您的住址: 高雄
文章: 77
|
用stack來做的話,會很方便,只要讀到空白或'這樣就pop出來前面的部分
然後再反轉字串就行了= =
__________________
宅男學生 轉型 宅男工程師 成功 宅男工程師 轉型 宅男分析師 失敗
|
|
|
|
Advance Member
![]() ![]() 加入日期: Mar 2002 您的住址: 台灣
文章: 471
|
引用:
寫程式我從不相信有所謂的高手!!高手在我眼中的定義是比別人多練習很多所以比較 會寫而已!! 如果先把原來的字用for依序讀入若不是空白也不是「'」便存在同一個陣列,若遇空 白或是[' ]便自已存在一個陣列最後再用一個for把各陣列倒反再組合印出(好像和上 面一位大大的想法不會差很多)
__________________
人生中有太多的選擇題,你能做最好的選擇嗎? |
|
|
|
|
Master Member
![]() ![]() ![]() ![]() 加入日期: Apr 2001 您的住址: Coruscant
文章: 1,637
|
引用:
這個有點問題唷∼呵呵 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 |
|
|
|
|
*停權中*
加入日期: Jun 2001
文章: 989
|
引用:
你所謂的高手是寫作業的高手嗎?... 別把太瞧不起高手囉 你為程式有那麼簡單嗎.程式最基板就是資料結構 離散數學 演算法 很明顯的,樓主顯然沒學過資料結構. 你沒學過這些東西,買一本快快樂樂學程式你真的會寫程式嗎? 不過是Garbage in Garbage out而已 , 就像樓主簡單的問題可以想到上百行 這一題作業有學過資料結構的用stack就可以輕鬆搞定了. 根本用不到reverse這種函數,(我還是用樓主的觀念去寫....慚愧) 更不要說那些線性代數,圖學...@#$%!$的理論了 很多人因為自己沒興趣不花工夫去K. 就認為其他比你強的人不過是多花點時間做習題而已... 這種人很多,我很不削這種人.有些東西你花同樣的時間去K 你也頂多寫的出跟習題差不多的東西.然後跟真正的高手比. 你跟他寫的東西一定不一樣..我說明白點,程式真的是要靠天份的 那些大師真的都是屬於天才級的,甚至不削做習題, 就可以想出別人想不出來的演算法,然後玩出新的東西. 資訊產業為什麼會進步的那麼迅速?因為太多高手了 你永遠都在玩高手玩過的東西..除非你變成高手,為資訊產業貢獻一些有用的東西 不然不要認為別人只是只寫程式寫的比別人多的人...人生應該花在更美好的事物上 然後就等著被高手玩膩的東西淘汰掉 除非你不吃這行 要不然就謙虛點...不然就是還沒遇到真正的高手吧 我老師說其實台灣高手已經很少了..它出國留學才真正見識到什麼是高手,天才 眼光要宏觀一點 此文章於 2004-05-15 05:03 PM 被 Rhoads 編輯. |
|
|
|
|
Advance Member
![]() ![]() 加入日期: Mar 2002 您的住址: 台灣
文章: 471
|
引用:
哈~~你誤會我的意思!!我的意思最主要是強調還是要多練習,就算他有高手的料但 他不動他不寫哪知道他自已是高手?只是想說多多練習是很重要的而已別想太多,我 沒打的很清楚讓您誤解啦!!不是沒高手只是勤能補拙而已 ![]()
__________________
人生中有太多的選擇題,你能做最好的選擇嗎? |
|
|
|