【Java】判断字符串中有多少种字符,以及各个字符的个数

【任务】

求字符串中的字符种类和各个字符的个数

【分析】

  1. 要想知道字符串的字符种类,肯定要看字符串的组成,可以通过循环遍历字符串中的字符来实现。把遍历过的字符储存到StringBuffer中,当遇到与StringBuffer中相同的字符就跳过,否则就继续储存,直到遍历完,StringBuffer的长度就是字符的种类个数
  2. 因为还要计算各个字符的个数,所以可以在第一层循环中再嵌套一个循环,并定义一个计算工具和一个数组,以用来计算各个字符的个数。在(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] + "个");
        }
    }
}

 

  • 4
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值