String s = "sunjavaandandroidjavajavajavaeejavamejavase#java.netjavaphpjava";
StringBuilder sb = new StringBuilder();
int middle = s.length() / 2;// 中間位置
// Map用來統計詞頻,這只是壹種方法;既然提供了集合,我們就用用咯
Map<Character, Integer> map = new HashMap<Character, Integer>();
for (int k = s.length() - 1; k > middle; --k) {// 後半部分
char c = s.charAt(k);// 當前字符
if (map.get(c) != null) {// map中有,表示出現過,次數+1
map.put(c, map.get(c) + 1);
} else {// 沒出現過,次數初始化為1
map.put(c, 1);
}
if (c >= 'a' && c <= 'z')// 小寫轉化為大寫(char內部的int值大小寫差32)
c = (char) (c - 32);
/**
* 其實大小寫轉換可以使用String類的toUpperCase(),我是為了壹個循環搞定,所以沒用。
*/
sb.append(c);
}
for (int i = middle; i >= 0; --i) {// 前半部分,反序輸出到sb
char c = s.charAt(i);
sb.append(c);
if (map.get(c) != null) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
System.out.println("逆序變大寫結果:" + sb.toString());
System.out.println("====下面是統計數據=========");
Set<Character> keys = map.keySet();// 循環map的壹種方法————獲取key的Set集合(另壹種獲取Map.Entry集合,自行研究)
Iterator<Character> item = keys.iterator();//叠代器
while (item.hasNext()) {
Character cc = item.next();
System.out.println("字符" + cc + "出現次數:" + map.get(cc));
}
// 以下為第壹題答案(為了方便,寫壹起去了)
Pattern p = Pattern.compile("java");
Matcher matcher = p.matcher(s);
boolean result = matcher.find();
int count = 0;
while (result) {
count++;
result = matcher.find();
}
System.out.println("'java'出現次數: " + count);
System.out.println(s.replaceAll("java", "JAVA"));
}
//這格式不太對,妳用IDE格式化壹下代碼就行了