本帖最后由 钟林杰 于 2013-4-12 15:49 编辑
今天我们一起来做一道java全国高等教育自学考试的程序设计题。
老规矩不能看别人的,得自己写,用自己的思路,因为这些都是很简单的题目。
让我们一起来对比一下我们的代码谁的更简洁更有效率更节省内存资源吧。
题目:请编写方法int countNum(String str),该方法的功能是统计已知字符串str中数字的个数。
例如:int countNum(“ad3j56k7”)的返回值是4.
要求定义字符串为: "Abc1k2k43k44j565jk35j8j0d9h87g6d5a4s3add21",返回值是22;
(要回答了才能查看我的答案哦!)
public static int countNum(String str) //定义countNum()方法
{
char ch[] = str.toCharArray(); //将字符串转换为字符数组。
char numTable[] ={'0','1','2','3','4','5','6','7','8','9'}; //定义一个数字表
int count = 0;
for(int i =0;i<str.length();i++) //用一个for循环遍历数组
{
for(int j=0;j<=9;j++) //再用一个for循环遍历数字表的数组
{
if(new Character(ch).equals(new Character(numTable[j]))) //判断是否ch是否是数字
count++; //如果是数字则用计数器记录
}
}
return count;
}
public static void main(String args[])
{
String str = "Abc1k2k43k44j565jk35j8j0d9h87g6d5a4s3add21"; System.out.print(countNum(str));
}
我循环了462次;
定义了两个数组,一个整型变量。(for里面的变量不计。)
刚看了试卷上的答案,它运用的方法更加高效简洁:
byte b[] = str.getBytes();
int count = 0;
for(int i=0;i<b.length;i++)
{
System.out.println(b);
if(b>='0'&&b<='9')
count++;
}
他利用了Ascll码表的位置进行判断,我之前没想到,你是否想到了呢?
|