Re: [閒聊] 程設作業
來馬後炮一下
因為我們偉大的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
推
10/29 02:15, , 1F
10/29 02:15, 1F
→
10/29 02:16, , 2F
10/29 02:16, 2F
推
10/29 02:22, , 3F
10/29 02:22, 3F
推
10/29 02:51, , 4F
10/29 02:51, 4F
推
10/29 10:10, , 5F
10/29 10:10, 5F
推
10/29 13:36, , 6F
10/29 13:36, 6F
推
10/29 13:41, , 7F
10/29 13:41, 7F
討論串 (同標題文章)