作者game0416 (凤狼)
看板NTUE-CS102
标题Re: [闲聊] 程设作业
时间Mon Oct 18 15:51:46 2010
没事乱写一下hmmm
这份能看懂大概算不错(嗄
第二份JAVA作业是字串内数值排序
指定输入模式 数值,数值....... ,数值
中间可能有非数值穿插,需输出输入错误
前面废话一下原始根本作法,後面再来附几个method各自应用这样
不算很难....吧(?)
虽然我为了凹个东西多凹掉一小时,结论还是放弃了就是
--
首先,提供输入的方法同样是一个字串读进String型态
然後你会注意到...中间夹,的关系,不能直接作排序
这个是这次题目的重点...问你怎麽作字串处理
首先,如果用以前C的方式去作,我们需要一个字元阵列...
所以参照了一下api,会得到在String里头有一个方法叫
toCharArray()
只要
char[] = string.toCharArray()就能得到字元阵列
有了字元阵列之後要怎麽作?
照着数值一个一个作判断就好
--
比方说...
1,20,5,8,6,4,3
是输入
这些存进字元阵列会变成
阵列索引:
0 1
2 3
4 5
6 7
8 9
10 11
该值 :
1 ,
2 0
, 5
, 8
, 6
4 3 (char)
设立另一个阵列与一个for回圈从最前头逐个检测ASCII code
当遇到数字,就把char转数字後减48
﹕ 0的ascii值为48,9则为57
然後存进一个temp里头,然後读取下一个
是数字的话,就temp = temp*10+integer
是,时,就把计算到现在的temp置入阵列、归零,然後检查下一个
: ,的ascii值是44
如果不是数字也不是,,那就只要break出去之後输出输入错误即可
--
实做一小段范例code作为参考
int index = 0
for (int i=0;i<input.length;i++){
if ((int)input[i] <= 57 || (int)input[i] >= 48)
temp = temp*10+(input[i]-57);
else if ((int)input == 44){
array[index++] = temp;
temp=0;
}
else{
System.out.print ("input error");
break;
}
}
大概会像这个样子作运作
--
面对要支援负数、小数点
也是同样的方法,只是更多的判断去作分别处理即可
当然,这样的方法略显原始...
所以可以应用其他method
比方说split()用正规表示式直接把字串拆成阵列
然後就能直接针对每个阵列元素作转换
利用前面提及的toCharArray另创一个阵列
检查没问题就parse成数值阵列也是个作法这样
--
所恐惧的,不是没有知识的大众 所憎恨的,不是深沉幽暗的人心
而是自以为是的思考之声 而是自恃甚高的执法者
所毁灭的,不是温馨和谐的世界 这是我最後的期许,没有愤怒、没有悔恨
而是自欺欺人的梦境 只剩下,浑沌的死亡呼吸
节自 新月神话-弑王者
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.130.128.171
1F:推 teiikushi:我想问一下,走地图的地图,是在程式内设定?? 10/18 16:00
2F:→ game0416:那倒是无所谓...看你要在哪里设定地图都可以 10/18 18:13
3F:→ game0416:那部份不是主要要测验的部份 10/18 18:13
4F:→ game0416:看过课本那段,看能不能对那段演算法有点概念比较重要 10/18 18:15
5F:推 jerry771210:加油吧 这份要拿及格分数大概写个10分钟 10/18 19:36
※ 编辑: game0416 来自: 120.127.47.86 (10/21 10:39)