输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
主要是练练HashMap,不要学我这么写
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;
/**
* 输入一行字符,分别统计出其英文字母、空格、数字和其它字符的个数。
*/
public class 求字符数 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
char[] ch = str.toCharArray();
HashMap<String,Integer> map = new HashMap();
for (int i = 0; i < ch.length; i++) {
String key;
int value = 1;
if (isEnglish(ch[i])) {
key = "English";
if (map.get(key) != null) {
value = value + map.get(key);
}
map.put(key,value);
} else if (isBlank(ch[i])) {
key = "Blank";
if (map.get(key) != null) {
value = value + map.get(key);
}
map.put(key,value);
} else if (isNum(ch[i])) {
key = "Num";
if (map.get(key) != null) {
value = value + map.get(key);
}
map.put(key,value);
} else {
key = "Other";
if (map.get(key) != null) {
value = value + map.get(key);
}
map.put(key,value);
}
}
//遍历
//映射关系的类型是Map.Entry类型,它是Map接口的内部接口
Set mappings = map.entrySet();
for (Object mapping : mappings) {
Map.Entry entry = (Map.Entry) mapping;
System.out.println(entry.getKey() + ":" + entry.getValue() + "个");
}
}
//判断是否为英文字母
public static boolean isEnglish(char ch) {
//字母A到Z:65到90 a到z:97到122
if (ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
return true;
} else {
return false;
}
}
//判断是否为空格
public static boolean isBlank(char ch) {
//空格是32
if (ch == 32) {
return true;
} else {
return false;
}
}
//判断是否为数字
public static boolean isNum(char ch) {
//数字0-9: 48~57
if (ch >= 49 && ch <= 57) {
return true;
} else {
return false;
}
}
}