Java获取字符串中字母出现的个数

已有字符串str1="sdfg,hellozx,sdfcv-waadfa,fsasdfxcvdf"
键盘输入任意字符串,例如:String str2="HaHahello01",
在原来字符串str1中去掉str2中最大的交集字符串(hello)后, 获取该字符串str1中的每个字母出现的次数。

例如:去掉hello后

以这种方式打印:字母按从大到小排序
输出:

x(出现2次)w(出现1次)v(出现2次)s(出现4次)g(出现1次)f(出现6次)d(出现5次)c(出现2次)
不按从大到小,按字母出现次数排序
输出:
f(出现6次)d(出现5次)s(出现4次)x(出现2次)v(出现2次)c(出现2次)w(出现1次)g(出现1次)

以下是Java获取字符串中字母出现的个数的示例代码:

```java
import java.util.HashMap;
import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String input = sc.nextLine();

HashMap<Character, Integer> map = new HashMap<>();
for (char c : input.toCharArray()) {
if (Character.isLetter(c)) {
if (map.containsKey(c)) {
map.put(c, map.get(c) + 1);
} else {
map.put(c, 1);
}
}
}

for (char key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
}
}
```

首先,使用 `Scanner` 获取用户输入的字符串并存储在 `input` 变量中。然后使用 `HashMap` 对每个字母出现次数进行计数,其中 `for` 循环遍历输入字符串中的每个字符,`Character.isLetter(c)` 判断字符是否为字母,如果是则判断其是否已经存在于 `map` 中,若存在则将其出现次数加一,否则将其加入到 `map` 中并将出现次数置为 1。

最后,遍历 `map` 中的元素,并输出每个字母及其出现次数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-18
import java.util.HashMap;
import java.util.Set;
import java.util.concurrent.CyclicBarrier;
public class TestStrNumber {
private static String str1 = "sdfg,hellozx,sdfcv-waadfa,fsasdfxcvdf";
public static void main(String[] args) {
String ss=getUnmatchStr("hello");
getCharNum(ss);
}
public static void getCharNum(String ss){
String sb="";
for (int i = 0; i < ss.length(); i++) {
if (ss.charAt(i)!='-'&&ss.charAt(i)!=',') {
sb+=ss.charAt(i);
}
}
char[] cs=sb.toCharArray();
int oldNum=0;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (char c : cs) {
if (map.containsKey(c)) {
oldNum=map.get(c);
map.put(c, oldNum+1);
}else {
map.put(c, 1);
}
}
Set<Character> keys = map.keySet();
for(Character c:keys){
System.out.print(c+"(出现"+map.get(c)+"次)");
}
}
public static String getUnmatchStr(String s){
String str2="";
int startIndex=0;
int endIndex=0;
if (str1.contains(s)) {
startIndex = str1.indexOf(s);
endIndex=startIndex+s.length();
}
str2 = str1.substring(0, startIndex)+str1.substring(endIndex, str1.length());
return str2;
}
}本回答被提问者采纳
第2个回答  2013-04-16
public static void main(String[] args) {
String s = "abc a bc abc bc abc";
Map<String,Integer> map = new HashMap<String,Integer>();
for(String str : s.split("|")){
if(map.containsKey(str)){
map.put(str, map.get(str)+1);
}else{
map.put(str, 1);
}
}
for(Entry<String,Integer> e : map.entrySet()){
System.out.println(e.getKey() +": "+e.getValue()+"个");
}
}

第3个回答  2013-04-16
这个有什么难度呢?
相似回答