作者ann263028 (腦殘安)
看板NTUE-CS102
標題Re: [閒聊] 程設作業
時間Fri Oct 29 02:08:19 2010
來馬後炮一下
因為我們偉大的JAVA助教的直屬學妹卓然
用一個投機的方法寫完這次的作業
讓我終於搞懂這作業之中的奧妙
首先如果你覺得這個作業很難懂
應該是因為型別轉換沒學好
先簡單講一下型別轉換
不同型別(int或char等等)的變數
是沒辦法互相交換和比較的!
(數字型別間的運算則會由編譯器幫你強制轉換)
相信在張力文已經好心告訴大家spilt這個好用函式後
大家應該都已經會把"輸入的string"分割成一個"string陣列"了
譬如說宣告String str和String astr[]
使用astr=str.split(",")
輸入1,2,3後原本的str用了spilt後
就變成astr[0]=1,astr[1]=2,astr[2]=3
在這之後通常就是開始寫排序用的迴圈
但這時會發現一個問題
存在astr裡的是字串
string是沒辦法比較大小的
最直觀的解決方法就是把string直接轉成int
(或者依題目來說應該是要轉成double)
用第一個作業就用過的n=Integer.parseInt(str)就可以了
(n是int,str是string)
這就是卓然超快速得到60分的方法
雖然編譯會過但如果輸入不是數字的東西
在執行程式時就會直接錯誤結束
於是只好在排序前就檢查到底有沒有不是數字的東西
先把string轉換成char
再把char轉換成ASCII碼
string→char
只要用張力文已經很好心告訴大家的check=astr[i].toCharArray()就行了
從這函式的名字可以看出其箇中奧妙
check要是一個char的陣列才行
譬如astr[0]=12那就會產生出check[0]=1和check[1]=2
char→ASCII碼
用x=(int)check[j]就可以了
(奇妙的是char直接轉int反而會編譯錯誤 那string究竟為什麼不會呢...?= =)
檢查ASCII碼就可以知道是否是數字囉~
最後排序時if的條件判斷也不能是string
要記得轉換成數字型別
轉換成double的函式張力文也有很好心的告訴大家囉!
就是n=Double.parseDouble(astr[i])
(n是double,astr[i]是string...就長得和轉成int的函式很像嘛!)
打完後發現這就是一篇感謝張力文很好心提供大家函式的文呀~
有沒有強者要出來教一下怎麼找函式比較快呀?
api的網頁一打開就算搜尋string要找到split大概天荒地老了吧...
安邦表示:這都是經驗!
歧視我們沒經驗就是囉?哭哭
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.233.155.112
推 ming3318:原來我是投機方式 我自己都不知道耶!! 10/29 02:15
→ ming3318:就算快速的得到60分 但是這分數不是我想要的阿ˊˋ 10/29 02:16
推 Arashinoon:安邦:好用函式怎麼找? 自己寫最快 10/29 02:22
推 pk873:安邦OS:其實我都是找函式來用的 現成的不撿嗎?? 10/29 02:51
推 daniel114:google java 字串分割 -> 找到有人用特定函式 ->看api 10/29 10:10
推 j2612280:這..有兩個人在揣測我的心理... 10/29 13:36
推 ip3311:安邦:現成的女人不載嗎? 10/29 13:41