A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

14 个回复

倒序浏览
这个问题问得好,,,,,问得恰到好处
回复 使用道具 举报
正在学字符串,完事给你答案
回复 使用道具 举报
字符串的遍历, TreeMap的存储 遍历
回复 使用道具 举报
package com.heima.test;

import java.util.Scanner;
import java.util.Set;
import java.util.TreeMap;

public class Demo1 {

    /**
     * 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
     */
    public static void main(String[] args) {
        String line = getLine();
        char[] arr = line.toCharArray();
        TreeMap<Character, Integer> tm = new TreeMap<Character, Integer> ();
        for (char cha : arr) {
            tm.put(cha, tm.containsKey(cha) ? tm.get(cha) + 1 : 1);
        }
        Set<Character> keySet = tm.keySet();
        for (Character cha : keySet) {
            switch (cha) {
            case '\t':
                System.out.println("\\t = " + tm.get(cha));
                break;

            case '\r':
                System.out.println("\\r  = " + tm.get(cha));
                break;

            case '\n':
                System.out.println("\\n = " + tm.get(cha));
                break;

            default:
                System.out.println(cha + " = " + tm.get(cha));
                break;
            }
        }
    }

    private static String getLine() {
        System.out.println("请输入一个字符串:");
        Scanner sc = new Scanner(System.in);
        return sc.nextLine();
    }

}
回复 使用道具 举报
import java.util.Scanner;

public class Test1 {

        public static void main(String[] args) {
                Scanner sc = new Scanner(System.in);
                System.out.println("请输入一个数据:");
                String usernum = sc.nextLine();
                int shuzi = 0;
                int zimu = 0;
                int kongge = 0;
                int qita = 0;
                //字符串转换成字符数组
                char[] chs = usernum.toCharArray();
                //遍历字符数组
                for(char ch:chs){
                        //ASC表中0-9对应的ASC码
                        if(ch>=48&&ch<=57){
                                shuzi++;
//英文字母对应的ASC码中间91-96不是
                        }else if(ch>=65&&ch<=122){
                                if(!(ch>90&&ch<97)){
                                        zimu++;
                                }
                        }else if(" ".equals(ch+"")){
                                kongge++;
                        }else{
                                qita++;
                        }
                }
                System.out.println("字母出现的个数为:"+zimu);
                System.out.println("数字出现的个数为:"+shuzi);
                System.out.println("空格出现的次数为:"+kongge);
                System.out.println("其他出现的次数为:"+qita);
               
        }

}
//有看不懂的地方回复我
回复 使用道具 举报
看一看。。。。。。。。。。
回复 使用道具 举报
hailong154 发表于 2016-5-14 15:42
import java.util.Scanner;

public class Test1 {

不错哦,大神
回复 使用道具 举报
  好帖,必火
回复 使用道具 举报
Tyler_王 发表于 2016-5-14 12:05
package com.heima.test;

import java.util.Scanner;

谢谢,虽然看不懂。。。留着以后看。。
回复 使用道具 举报
hailong154 发表于 2016-5-14 15:42
import java.util.Scanner;

public class Test1 {

谢谢,大致看懂了,就是那啥遍历字符数组没懂,还没学到;
                //遍历字符数组
                for(char ch:chs)
能不能改成下面这种,用索引调元素;
for (int i = 0;i<chs.length;i++)
回复 使用道具 举报
我有上将潘凤 发表于 2016-5-15 16:05
谢谢,虽然看不懂。。。留着以后看。。

哦 我其实写错了,我是统计所有字符的个数{:3_46:}
回复 使用道具 举报
我有上将潘凤 发表于 2016-5-15 16:15
谢谢,大致看懂了,就是那啥遍历字符数组没懂,还没学到;
                //遍历字符数组
             ...

道理一样,那个是foreach,增强for循环,专门用来遍历数组和集合的
回复 使用道具 举报
我有上将潘凤 发表于 2016-5-15 16:15
谢谢,大致看懂了,就是那啥遍历字符数组没懂,还没学到;
                //遍历字符数组
             ...

哦哦可以,这个是一样的,这个数增强for,跟普通for效果一样,就是为了写起来方便.还有个地方可以改动的,我给你改下你看看,
回复 使用道具 举报
我有上将潘凤 发表于 2016-5-15 16:15
谢谢,大致看懂了,就是那啥遍历字符数组没懂,还没学到;
                //遍历字符数组
             ...

if (ch >= '0' && ch <= '9') {
                                shuzi++;
                                // 英文字母对应的ASC码中间91-96不是
                        } else if (ch >= 'A' && ch <= 'z') {
                                if (!(ch > 'Z' && ch < 'a')) {
                                        zimu++;
                                }
                        } else if (ch==' ') {
                                kongge++;
                        } else {
                                qita++;
                        }
这里不用对应那个码表,直接进行比较就可以的.这样的话不会因为记不住码表而写不出来
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马