作者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
1F:推 ming3318:原来我是投机方式 我自己都不知道耶!! 10/29 02:15
2F:→ ming3318:就算快速的得到60分 但是这分数不是我想要的阿ˊˋ 10/29 02:16
3F:推 Arashinoon:安邦:好用函式怎麽找? 自己写最快 10/29 02:22
4F:推 pk873:安邦OS:其实我都是找函式来用的 现成的不捡吗?? 10/29 02:51
5F:推 daniel114:google java 字串分割 -> 找到有人用特定函式 ->看api 10/29 10:10
6F:推 j2612280:这..有两个人在揣测我的心理... 10/29 13:36
7F:推 ip3311:安邦:现成的女人不载吗? 10/29 13:41