美文网首页基础编程50题
【题目07】统计字符串的中各字符类型个数

【题目07】统计字符串的中各字符类型个数

作者: Xplorist | 来源:发表于2017-03-25 15:19 被阅读68次

    【程序7】
    题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

    package com.share.test01_10;
    
    import java.util.Scanner;
    
    /**
     * 【程序7】题目:<br>
     * 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
     * 
     * @author brx
     */
    public class Test07 {
        public static void main(String[] args) {
            test();
        }
    
        /**
         * 思路:统计字符串中的英文字母,空格,数字,其他字符<br>
         * 思路1:通过将字符串中的字符转化为字符数组来比较ASCII码表中的范围<br>
         * 思路2:将英文字母,空格,数字分别用字符数组存储来遍历比较<br>
         * 思路3:使用Character类中的判断方法
         */
        public static void test() {
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入您要输入的字符串:");
            String str = sc.nextLine();
            test1_1(str);
            // test1_2(str);
            // test2(str);
            // test3(str);
        }
    
        /**
         * 思路1_1
         */
        public static void test1_1(String str) {
            char[] c = str.toCharArray();
            int upperNum = 0;// 大写英文字母个数
            int lowerNum = 0;// 小写英文字母个数
            int digtaNum = 0;// 数字个数
            int spaceNum = 0;// 空格个数
            int otherNum = 0;// 其他字符个数
            for (char a : c) {
                if (a >= 65 && a <= 90) {
                    upperNum++;
                } else if (a >= 97 && a <= 122) {
                    lowerNum++;
                } else if (a >= 48 && a <= 57) {
                    digtaNum++;
                } else if (a == 32) {
                    spaceNum++;
                } else {
                    otherNum++;
                }
            }
            System.out.println("大写英文字母个数: " + upperNum + " 小写英文字母个数: " + lowerNum + " 数字个数: " + digtaNum + " 空格个数:  "
                    + spaceNum + " 其他字符个数:  " + otherNum);
        }
    
        /**
         * 思路1_2
         */
        public static void test1_2(String str) {
            int upperNum = 0;// 大写英文字母个数
            int lowerNum = 0;// 小写英文字母个数
            int digtaNum = 0;// 数字个数
            int spaceNum = 0;// 空格个数
            int otherNum = 0;// 其他字符个数
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (c >= 'A' && c <= 'Z') {
                    upperNum++;
                } else if (c >= 'a' && c <= 'z') {
                    lowerNum++;
                } else if (c >= '0' && c <= '9') {
                    digtaNum++;
                } else if (c == ' ') {
                    spaceNum++;
                } else {
                    otherNum++;
                }
            }
            System.out.println("大写英文字母个数: " + upperNum + " 小写英文字母个数: " + lowerNum + " 数字个数: " + digtaNum + " 空格个数:  "
                    + spaceNum + " 其他字符个数:  " + otherNum);
        }
    
        /**
         * 思路2
         */
        public static void test2(String str) {
            int upperNum = 0;// 大写英文字母个数
            int lowerNum = 0;// 小写英文字母个数
            int digtaNum = 0;// 数字个数
            int spaceNum = 0;// 空格个数
            int otherNum = 0;// 其他字符个数
            String sl = "qwertyuiopasdfghjklzxcvbnm";
            String su = sl.toUpperCase();
            String sd = "0123456789";
            String ss = " ";
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (sl.indexOf(c) != -1) {
                    lowerNum++;
                } else if (su.indexOf(c) != -1) {
                    upperNum++;
                } else if (sd.indexOf(c) != -1) {
                    digtaNum++;
                } else if (ss.indexOf(c) != -1) {
                    spaceNum++;
                } else {
                    otherNum++;
                }
            }
            System.out.println("大写英文字母个数: " + upperNum + " 小写英文字母个数: " + lowerNum + " 数字个数: " + digtaNum + " 空格个数:  "
                    + spaceNum + " 其他字符个数:  " + otherNum);
        }
    
        /**
         * 思路3
         */
        public static void test3(String str) {
            int upperNum = 0;// 大写英文字母个数
            int lowerNum = 0;// 小写英文字母个数
            int digtaNum = 0;// 数字个数
            int spaceNum = 0;// 空格个数
            int otherNum = 0;// 其他字符个数
    
            for (int i = 0; i < str.length(); i++) {
                char c = str.charAt(i);
                if (Character.isUpperCase(c)) {
                    upperNum++;
                } else if (Character.isLowerCase(c)) {
                    lowerNum++;
                } else if (Character.isDigit(c)) {
                    digtaNum++;
                } else if (Character.isSpaceChar(c)) {
                    spaceNum++;
                } else {
                    otherNum++;
                }
            }
            System.out.println("大写英文字母个数: " + upperNum + " 小写英文字母个数: " + lowerNum + " 数字个数: " + digtaNum + " 空格个数:  "
                    + spaceNum + " 其他字符个数:  " + otherNum);
        }
    }
    
    

    相关文章

      网友评论

        本文标题:【题目07】统计字符串的中各字符类型个数

        本文链接:https://www.haomeiwen.com/subject/tyscottx.html