JAVA(字符串的遍历,求每个字符出现的次数)
程序员文章站
2024-03-05 12:50:30
...
Map遍历
package org.baojiwenli.collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入一段字符串:");
String s = input.next();
System.out.println("字符串的总长度:"+s.length());
Map<Character,Integer> result = new HashMap<Character, Integer>();
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if(result.get(ch) != null){
result.put(ch,result.get(ch)+1);
}else{
result.put(ch,1);
}
}
for(Map.Entry entry: result.entrySet()){
System.out.println(entry.getKey()+"->"+entry.getValue());
}
System.out.println("字符串总长度(不包括一样的字符):"+result.size());
}
}
传统的For循环遍历+数组
package org.baojiwenli.collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String a = sc.next();
StringConstitute(a);
}
//寻找一个字符串中各个字符出现的个数
public static void StringConstitute(String str) {
// 用于记录字符种类(可边长类型String)
StringBuffer recordType = new StringBuffer();
// 用于记录字符个数:定义一个一维数组
int[] recordNumber = new int[str.length()];
for (int i = 0; i < str.length(); i++) {
// 用于临时计数
int count = 0;
// str.charAt(i)的值赋给medium
String medium = str.charAt(i) + "";
// 判断recordType中没有medium中的字符
if (!recordType.toString().contains(medium)) {
// 将medium中的字符添加到recordType中
recordType.append(medium);
count++;
// 用于计算medium中的字符在字符串中的个数
for (int j = i + 1; j < str.length(); j++) {
// 如果str.charAt(j)中的字符与medium中的字符相同时
if (medium.equals(str.charAt(j) + "")) {
count++;
}
}
// 将计数工具的值赋给recordNumber数组
recordNumber[recordType.length()] = count;
}
}
System.out.println("字符串\"" + str + "\"共有" + recordType.length() + "种字符");
for (int i = 0; i < recordType.length(); i++) {
System.out.println("字符\'" + recordType.charAt(i) + "\'共有" + recordNumber[i + 1] + "个");
}
}
}