统计控制台输入的一句话中不同字⺟字符出现的次数。例如:现有字符串"Hello World!",上述字符串中各个字符的出现的次数为:
l:3
o:2
W:1
r:1
d:1
(不考虑数字、空格和特殊字符的个数,按照字符在字符串中出现的顺序显示。相同字母的大小写算两个不同字符)
统计控制台输入的一句话中不同字⺟字符出现的次数。例如:现有字符串"Hello World!",上述字符串中各个字符的出现的次数为:
控制台任意输入一段话,可以有空格和特殊符号
输出字符和字符对应的出现字数(字符和出现次数之间用:隔开,输出逻辑已经给出)
Hello World
H:1 e:1 l:3 o:2 W:1 r:1 d:1
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
//去除字符串中间的空格
String trim = line.replaceAll(" ","");
Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
int length = 0;
//write your code here......
while(length < trim.length()){
//如果存在key,则值+1
if(map.containsKey(trim.charAt(length))){
map.put(trim.charAt(length), map.get(trim.charAt(length))+1);
length++;
}else{
map.put(trim.charAt(length),1);
length++;
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
} import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
for(int i=0;i<line.length();i++){
char c=line.charAt(i);
if(Character.isLetter(c)){
if(map.containsKey(c)) map.put(c,map.get(c)+1);
else map.put(c,1);
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
} 笔记-EntrySet对象解释:
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
map是一个 Map对象(比如HashMap<Character, Integer>)。
entrySet()方***返回一个 视图集合,里面装的不是单独的 key 或 value,而是 key-value 对的集合。
返回类型是:Set<Map.Entry<K, V>>。
也就是说,entrySet()生成的是一个 Set集合,集合里每个元素都是一个Map.Entry<K, V>对象。
这是 Map 里定义的一个 内部接口,用来表示一个键值对。
举个例子,如果map里有:
{'a' -> 1, 'b' -> 2} 那么entrySet()得到的就是一个集合:
[{a=1}, {b=2}] 每个{a=1}、{b=2}就是一个Map.Entry<Character, Integer>。
Map.Entry提供的方法:
getKey()→ 获取键
getValue()→ 获取值
setValue(V value)→ 修改值
Set:集合,不允许重复元素。
Map.Entry<Character, Integer>:集合里存放的是 键值对对象,键是Character类型,值是Integer类型。
所以entrys就是一个 键值对的集合。
Map<Character, Integer> map = new HashMap<>();
map.put('a', 1);
map.put('b', 2);
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println("键 = " + entry.getKey() + ", 值 = " + entry.getValue());
} 输出:
键 = a, 值 = 1 键 = b, 值 = 2
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
//write your code here......
for(char ch:line.toCharArray()){
if(Character.isLetter(ch)){
map.put(ch,map.getOrDefault(ch,0)+1);
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
} //write your code here......
line = line.replaceAll("[^a-zA-Z]+", "");//去除数字、空格和特殊字符
char[] chars = line.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (map.containsKey(chars[i])) { // 判断map中是否存在
map.put(chars[i], map.get(chars[i]) + 1);//存在+1
} else {
map.put(chars[i], 1); // 否则value为1个
}
} import java.util.Scanner;
import java.util.Map;
import java.util.HashMap;
import java.util.Set;
import java.util.HashSet;
import java.util.Iterator;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextLine()) { // 注意 while 处理多个 case
String str = in.nextLine();
String regx = "[^a-zA-Z]";
String[] tempArray = str.replaceAll(regx, "").split("");
//newStr存储字符及其个数
StringBuffer newStr = new StringBuffer();
for(String temp : tempArray){
if(newStr.toString().contains(temp)){
int charIndex = newStr.toString().indexOf(temp);
char num = newStr.charAt(charIndex + 1);
newStr.setCharAt(charIndex + 1, (char)(num + 1));
}else{
newStr.append(temp);
newStr.append(1);
}
}
for (int i = 0; i< newStr.length(); i+=2){
System.out.println(newStr.charAt(i) + ":" + newStr.charAt(i+1));
}
}
}
} import java.util.*; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String line = scanner.nextLine(); Map<Character, Integer> map = new LinkedHashMap<Character, Integer>(); //write your code here...... //遍历字符串 for(int i = 0; i < line.length(); i++) { Character ch = line.charAt(i); //只处理 A-Za-z 范围的字符 if (ch >= 'A' && ch <= 'z') { //map 不存在:设为 0 再加 1;若存在:获取原值 + 1 map.put(ch,map.getOrDefault(ch, 0) + 1); } } Set<Map.Entry<Character, Integer>> entrys = map.entrySet(); for (Map.Entry<Character, Integer> entry : entrys) { System.out.println(entry.getKey() + ":" + entry.getValue()); } } }
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.nextLine();
Map<Character, Integer> map = new LinkedHashMap<Character, Integer>();
//write your code here......
for(int countNum = 0;countNum < line.length();countNum++){
char toCountChars = line.charAt(countNum);
//判断是否为字母
if(Character.isLetter(toCountChars)){
if(map.containsKey(toCountChars)){
//若哈希表中有该字母,计数+1
map.put(toCountChars,map.get(toCountChars) + 1);
}else{
//否则,创建一条新纪录至map表下
map.put(toCountChars,1);
}
}
}
Set<Map.Entry<Character, Integer>> entrys = map.entrySet();
for (Map.Entry<Character, Integer> entry : entrys) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
}