Re: [閒聊] 程設作業

看板NTUE-CS102作者 (腦殘安)時間15年前 (2010/10/29 02:08), 編輯推噓6(601)
留言7則, 6人參與, 最新討論串22/30 (看更多)
來馬後炮一下 因為我們偉大的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
就算快速的得到60分 但是這分數不是我想要的阿ˊˋ
10/29 02:16, 2F

10/29 02:22, , 3F
安邦:好用函式怎麼找? 自己寫最快
10/29 02:22, 3F

10/29 02:51, , 4F
安邦OS:其實我都是找函式來用的 現成的不撿嗎??
10/29 02:51, 4F

10/29 10:10, , 5F
google java 字串分割 -> 找到有人用特定函式 ->看api
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
文章代碼(AID): #1CoRmLRe (NTUE-CS102)
討論串 (同標題文章)
文章代碼(AID): #1CoRmLRe (NTUE-CS102)