//以下是我写的一段程序,希望大家能帮我重构一下,从程序的性能和类的开销,设计模式的角度等方面说下自己的看法!在这先谢谢了! public class Test { private static int space = 0; private static int number = 0; private static int character = 0; public Test() { } public static void main(String[] args) {
strCount("aaasdfdsfdsf fdAADD3432 erew34");
} public static boolean isAsciiAlpha(char ch) {
return (ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z');
} public static boolean isAsciiNumeric(char ch) {
return ch >= '0' && ch <= '9';
} public static boolean isBlank(char ch) {
return Character.isWhitespace(ch);
} public static void strCount(String str) {
char[] ch = str.toCharArray();
for (char c : ch) {
if (isAsciiAlpha(c)) {
character++;
} else if (isAsciiNumeric(c)) {
number++;
} else if (isBlank(c)) {
space++;
}
}
print();
} private static void print() {
System.out.println("空格的数目:" + space);
System.out.println("数字的数目:" + number);
System.out.println("字符的数目:" + character);
}}

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【MinThinking】截止到2008-06-23 11:32:42的历史汇总数据(不包括此帖):
    发帖数:0                  发帖分:0                  
    结贴数:0                  结贴分:0                  
    未结数:0                  未结分:0                  
    结贴率:-------------------结分率:-------------------
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    好多方法都能实现
    public class Test
    { private static int space = 0;
    private static int number = 0;
    private static int character = 0;

    public static void main(String[] str)
    {
    Pattern p1 = Pattern.compile("[a-zA-Z]");
    Pattern p2 = Pattern.compile("[0-9]");
    Pattern p3 = Pattern.compile("[\\s]");
    Matcher m1 = p1.matcher("aaasdfdsfdsf fdAADD3432 erew34");
    Matcher m2 = p2.matcher("aaasdfdsfdsf fdAADD3432 erew34");
    Matcher m3 = p3.matcher("aaasdfdsfdsf fdAADD3432 erew34");
    while(m1.find())
    {
    character ++;
    }
    while(m2.find())
    {
    number ++;
    }
    while(m3.find())
    {
    space ++;
    }
    print( );
    } private static void print()
    {
    System.out.println("空格的数目:" + space);
    System.out.println("数字的数目:" + number);
    System.out.println("字母的数目:" + character);
    }
      

  3.   

    for循环那个地方有没有更好的解决办法?从程序设计的角度,其他的不考虑。
      

  4.   

    for (char c : ch) {
    }改为:for (int i = 0, k = ch.length; i < k; i++) {
    }这种结构的话,遍历速度会快很多,因为 foreach 循环内部得转换成迭代器进行迭代。print(); 不要写在 strCount 这个方法中。其他的也看不有什么地方需要优化了,如果那三个判断不准备公用的话,建议改成 private 的。
      

  5.   

    [Quote=引用 8 楼 bao110908 的回复:]
    for (char c : ch) { 
    } 改为: for (int i = 0, k = ch.length; i < k; i++) { 

    想问下,iterator 与后面的哪种高效,上次测试的时候,感觉差不多样的
      

  6.   

    在数组和 List 遍历中,下面这个是最快的,速度从慢至快分别为(以 List 为例):for(String s : list)
    for(Iterator<String> i = list.iterator(); i.hasNext(); )
    for(int i = 0; i < list.size(); i++)
    for(int i = 0, k = list.size(); i < k; i++)