JAVA程序中如何输出一个字符串中相同字符的个数

在一个JAVA程序中 , 我定义了一个字符串 字符串当中有符号_ ,譬如 String string=_str_num_shut_ 这个字符串中有4个_,我如何通过一段代码知道有几个_ ,还有如何截取第三个_前面的字符串

JAVA程序中如何输出一个字符串中相同字符的个数,代码如下:

import java.util.HashMap;
import java.util.Map;


public class TestC {
public static void main(String[] args){
//要统计字符个数的字符串
String str="abcdeab";
//每个字符和个数都存放在集合中,
Map<Character,Integer> map=new HashMap<Character,Integer>();
//遍历字符串
for(int x=0;x<str.length();x++){
//获取字符
char c=str.charAt(x);
//判断该字符是否存在集合
if(map.get(c)==null){
//不存在就存进去
map.put(c, 1);
}else{
//存在了就加一
int count= map.get(c)+1;
map.put(c, count);
}

}
//输出每个字符的出现次数
System.out.println(map);
}
}

输出结果:
{d=1, e=1, b=2, c=1, a=2}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-07-05
详细代码如下:
package com.week27.tranning01;

import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Scanner;

public class SameChar {
public static void main(String[] args) {
//通过键盘录入任意字符串
Scanner sc = new Scanner(System.in);
System.out.println("请输入任意一个字符串:");
//再将字符串转换为数组arr
char[] str = sc.nextLine().toCharArray();
//设置一个map集合用来进行统计Character代表字符 Integer代表数量
Map<Character,Integer> map = new HashMap<Character,Integer>();
//使用value 和 Key的对应 关系来取得 重复的有多少个
for (char c : str) {
Integer count = map.get(c);
if(count==null){
//如果是第一次出现则value值为1
map.put(c, 1);
}else{
//如果不是第一次出现则++value
map.put(c,++count);
}
}
//将map 使用迭代器导出
Iterable<Entry<Character,Integer>> entry = map.entrySet();
for (Entry<Character, Integer> s : entry) {
System.out.println(s.getKey()+"有"+s.getValue()+"个");
}

}
}
第2个回答  2013-07-24
可以调用:
public String[] split(String regex,int limit)根据匹配给定的正则表达式来拆分此字符串。 此方法返回的数组包含此字符串的子字符串,每个子字符串都由另一个匹配给定表达式的子字符串终止,或者由此字符串末尾终止。数组中的子字符串按它们在此字符串中出现的顺序排列。如果表达式不匹配输入的任何部分,那么所得数组只具有一个元素,即此字符串。 limit 参数控制模式应用的次数,因此影响所得数组的长度。如果该限制 n 大于 0,则模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入。如果 n 为非正,那么模式将被应用尽可能多的次数,而且数组可以是任何长度。如果 n 为 0,那么模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。 如:String str = "_ _ _ _ _ _ _ _ _";int num = str.split("_", -1).length - 1;
第3个回答  2013-07-24
用string下面的split方法就行了。伪代码如下:string[] a = string.split(new char('_')),会把字符串拆分成以_分隔的几个字符串_的个数就是数组a.length-1,第3个前面的么就是a[3]本回答被网友采纳
第4个回答  2013-07-24
两次遍历加上charAt(i)方法可以实现统计~~~