//以下是我写的一段程序,希望大家能帮我重构一下,从程序的性能和类的开销,设计模式的角度等方面说下自己的看法!在这先谢谢了! 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);
}}
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);
}}
解决方案 »
- 有关线程中的几个问题?
- 整了一个上午的排序问题,希望前辈给予一下解答
- 关与线程的问题
- 为何还会出现类找不到的问题
- 急!急!急!数值计算
- java下面连接MYSQL数据库不通,在JSP下面就可以,在线求助!
- 〓〓〓谁能给我一个关于JFileChooser和FileFilter的完整例子啊,没有用过,学习一下〓〓〓
- 到迈谱,我应聘java,他却问我cisco?我不禁自问:他会java吗?
- 急!请教高手:一个关于java进程的问题
- Java 8 Stream 之 竟然无法结束。。。
- Process p=Runtime.getRuntime().exec("");语句
- 我是山区农村的孩子,买不起vs。那么Java+mySQL是免费的把?可以用来开发商业程序把?vs好像不行。
楼主【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
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);
}
}改为:for (int i = 0, k = ch.length; i < k; i++) {
}这种结构的话,遍历速度会快很多,因为 foreach 循环内部得转换成迭代器进行迭代。print(); 不要写在 strCount 这个方法中。其他的也看不有什么地方需要优化了,如果那三个判断不准备公用的话,建议改成 private 的。
for (char c : ch) {
} 改为: for (int i = 0, k = ch.length; i < k; i++) {
}
想问下,iterator 与后面的哪种高效,上次测试的时候,感觉差不多样的
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++)