【任务】
求字符串中的字符种类和各个字符的个数
【分析】
- 要想知道字符串的字符种类,肯定要看字符串的组成,可以通过循环遍历字符串中的字符来实现。把遍历过的字符储存到StringBuffer中,当遇到与StringBuffer中相同的字符就跳过,否则就继续储存,直到遍历完,StringBuffer的长度就是字符的种类个数。
- 因为还要计算各个字符的个数,所以可以在第一层循环中再嵌套一个循环,并定义一个计算工具和一个数组,以用来计算各个字符的个数。在(1)储存字符之前,先定义一个计算工具,然后再储存字符,并遍历该位置字符后面的字符,若遇到与该位置字符相同的就个数加1,否则,就跳过。待遍历完之后,将计算工具的值赋值给数组。
【实现】
package wyph.task02;
import java.util.Scanner;
public class Task13 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("请输入一个字符串:");
String a = sc.nextLine();
StringConstitute(a);
}
public static void StringConstitute(String args) {
// 用于记录字符种类
StringBuffer recordType = new StringBuffer();
// 用于记录字符个数
int[] recordNumber = new int[args.length()];
for (int i = 0; i < args.length(); i++) {
// 用于临时计数
int count = 0;
// 将args.charAt(i)的值赋给medium
String medium = args.charAt(i) + "";
// 判断recordType中没有medium中的字符
if (!recordType.toString().contains(medium)) {
// 将medium中的字符添加到recordType中
recordType.append(medium);
count++;
// 用于计算medium中的字符在字符串中的个数
for (int j = i + 1; j < args.length(); j++) {
// 如果args.charAt(j)中的字符与medium中的字符相同时
if (medium.equals(args.charAt(j) + "")) {
count++;
}
}
// 将计数工具的值赋给recordNumber数组
recordNumber[recordType.length()] = count;
}
}
System.out.println("字符串\"" + args + "\"共有" + recordType.length() + "种字符");
for (int i = 0; i < recordType.length(); i++) {
System.out.println("字符\'" + recordType.charAt(i) + "\'共有" + recordNumber[i + 1] + "个");
}
}
}