我想封装一个计算类,计算一个字符串中连续辅音字母的比例。
我想通过 类方法(static) 而不是 实例化类去执行这个方法,
于是我这么写了代码:
public static double calcConsecConsonantRatio(String str) {
int consonantCount = 0;
int flag = 0;
str = str.toLowerCase();
HashSet<Character> hs = new HashSet<Character>();
char[] consonant = {'b', 'c', 'd', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'v', 'w', 'x', 'y', 'z'};
for (int i = 0; i < consonant.length; i++) {
hs.add(consonant[i]);
}
for (int i = 0; i < str.length(); i++) {
if (hs.contains(str.charAt(i))) flag++;
else {
if (flag != 1) consonantCount += flag;
flag = 0;
}
}
consonantCount += flag;
return (double) consonantCount / str.length();
}
但是这样有一个问题就是每次调用这个方法的话 就需要重新执行一遍 入 Hashset 的操作,
但是因为是 static 方法 所以无法将该 Hashset 命名为成员变量。
我有很多这样的集合,比如 元音集合、数字集合等等,这些都不知道怎么办,请教一下大家
1
LossLess 2016-04-05 21:56:59 +08:00 2
public class Test {
private static HashSet<Character> set = new HashSet<>(); private static Character[] str = {'a', 'b', 'c'}; static { set.addAll(Arrays.asList(str)); } private static void test() { System.out.println(set); } public static void main(String[] args) { test(); } } 可以通过静态代码快初始化 |
2
Lonely 2016-04-05 22:15:18 +08:00 1
一个就是楼上的方法。
public class Test { private static HashSet set = initSet(); private static HashSet initSet() { //do something } |
3
anonymoustian OP @LossLess 谢谢!
|
4
anonymoustian OP @Lonely 谢谢!
|