题目:统计大写、小写、数字和其他符号的个数
public static void main(String[] args) throws Exception {
statisticsChar();
}
/**
* 统计大写、小写、数字和其他符号
*/
public static void statisticsChar() {
String upper = "QWERTYUIOPASDFGHJKLZXCVBNM"; // 大写
String lower = "qwertyuiopasdfghjklzxcvbnm"; // 小写
String number = "1234567890"; // 数字
Map<String, Integer> map = new HashMap<>();
for (String data : getFileData()) {
for (char c : data.toCharArray()) {
if (upper.contains(String.valueOf(c))) {
countMap(map, "upper");
} else if (lower.contains(String.valueOf(c))) {
countMap(map, "lower");
} else if (number.contains(String.valueOf(c))) {
countMap(map, "number");
} else {
countMap(map, "other");
}
}
}
System.out.println(map);
}
/**
* 计算数值
* @param map
* @param key
*/
private static void countMap(Map<String, Integer> map, String key) {
Integer count = map.get(key);
if (count != null) {
count = count + 1;
map.put(key, count);
} else {
map.put(key, 1);
}
}
/**
* 读取文件中每一行数据
* @return
*/
public static List<String> getFileData() {
List<String> arrayList = new ArrayList<>();
try {
File file = new File("d:\\99.log");
InputStreamReader inputReader = new InputStreamReader(new FileInputStream(file), "UTF-8");
BufferedReader bf = new BufferedReader(inputReader);
// 按行读取字符串
String str;
while ((str = bf.readLine()) != null) {
arrayList.add(str);
}
bf.close();
inputReader.close();
} catch (IOException e) {
e.printStackTrace();
}
return arrayList;
}