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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
我看到了第八天,毕老师的视频里好像没说怎么遍历String类里的字符啊?有人知道用java怎么解吗?



评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

6 个回复

倒序浏览

把基础全部看完你就应该懂了

本帖最后由 飒飒 于 2015-5-8 14:27 编辑

public class FoundCharCount {

        /**
         * 输入字符,分别统计出其中英文字母、空格、数字和其它字符的个数。
         *
         * @param args
         */
        public static void main(String[] args) {
                System.out.println("请输入字符串:");   
                Scanner sc = new Scanner(System.in);   //通过键盘输入字符串
                String line = sc.nextLine();

                foundCharCount(line);
        }

        private static void foundCharCount(String line) {
                char[] arr = line.toCharArray();         //把字符串转换成字符数组
                TreeMap<Character, Integer> map = new TreeMap<Character, Integer>();   //定义一个map集合用来存储字符并统计字符出现次数

                for (Character ch : arr) {
                        map.put(ch, map.containsKey(ch) ? map.get(ch) + 1 : 1);
                }

                for (Character ch : map.keySet()) {
                        if((int)ch == 9)                  //tab键对应的值是9
                                System.out.println("\\t"+":::"+map.get(ch));
                        else if((int)ch == 32)         // 空格键对应的是32
                                System.out.println("空格"+":::"+map.get(ch));
                        else
                                System.out.println(ch + ":::" + map.get(ch));
                        
                }
        }
}

评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1

查看全部评分

回复 使用道具 举报
先转换为字符数组,再遍历
回复 使用道具 举报
学习一下~
回复 使用道具 举报
  1. import java.io.BufferedReader;
  2. import java.io.FileNotFoundException;
  3. import java.io.FileReader;
  4. import java.io.IOException;
  5. import java.util.Scanner;
  6. import java.util.Set;
  7. import java.util.TreeMap;

  8. /*
  9. * 1..电脑D盘下a.txt文件中有一行文字(含英文和数字),文件密码为“heima”,请从控制台输入密码,读取文件,
  10. *并将文件中的字母 统计后打印在控制台上,打印格式:a:2个;b:3个....
  11. */
  12. public class Heima_01 {
  13.         public static void main(String[] args) {
  14.                 // 创建Map集合,存储字母及其个数
  15.                 TreeMap<Character, Integer> tm = new TreeMap<Character, Integer>();
  16.                 // 封装件键盘录入数据
  17.                 Scanner sc = new Scanner(System.in);
  18.                 System.out.println("请输入文件密码");
  19.                 String line = sc.next();
  20.                 // 判断文件密码是否正确
  21.                 if ("heima".equals(line)) {
  22.                         BufferedReader br = null;
  23.                         String lines = null;
  24.                         try {
  25.                                 // 读取文件,并将文件字符串转成字符数组
  26.                                 br = new BufferedReader(new FileReader("a.txt"));
  27.                                 lines = br.readLine();
  28.                                 char[] chs = lines.toCharArray();
  29.                                 // 遍历Map集合,判断集合中是否含有数组的元素
  30.                                 for (Character key : chs) {
  31.                                         Integer value = tm.get(key);
  32.                                         // 集合不含数组中元素,向集合中添加元素
  33.                                         if (value == null)
  34.                                                 tm.put(key, 1);
  35.                                         // 集合中含有此元素,则value值加1
  36.                                         else if (value != null) {
  37.                                                 value++;
  38.                                                 tm.put(key, value);
  39.                                         }
  40.                                 }
  41.                         } catch (IOException e) {
  42.                                 e.printStackTrace();
  43.                         } finally {
  44.                                 try {
  45.                                         // 关闭资源
  46.                                         if (br != null)
  47.                                                 br.close();
  48.                                 } catch (IOException e) {
  49.                                         e.printStackTrace();
  50.                                 }
  51.                         }
  52.                         // 定义字符串缓冲区
  53.                         StringBuilder sb = new StringBuilder();
  54.                         // 遍历集合,获取集合中key和value值
  55.                         Set<Character> set = tm.keySet();
  56.                         for (Character key : set) {
  57.                                 Integer value = tm.get(key);
  58.                                 // 判断key值是否为字母,并将key和value值拼接起来
  59.                                 if ((key >= 'a' && key <= 'z') || (key >= 'A' && key <= 'Z'))
  60.                                         sb.append(key).append(":").append(value).append("个;");
  61.                         }
  62.                         // 控制台上输入统计字母数
  63.                         System.out.println(sb.toString());
  64.                 }
  65.                 else{
  66.                         System.out.println("密码输入不正确");
  67.                 }
  68.         }
  69. }
复制代码
回复 使用道具 举报
飒飒 发表于 2015-5-8 14:26
public class FoundCharCount {

        /**

还是要转成数组啊,我还需要多学学,谢谢~
回复 使用道具 举报
string 字符串会转换成char数组 你遍历数组  挨着比较就可以了。如果满足条件 就 计数器++
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马