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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Havorld 中级黑马   /  2014-7-30 23:14  /  833 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给定一个字符串,计算出大写字母几个,小写字母几个,数字几个,其他的字符几个
String s = "ABCDEabcd123456!@#$%^&";

6 个回复

倒序浏览
给楼主提供下思路,1、把字符串转换成字符数组 2、循环获取数组每个元素的ASCLL码,根据不同字符码值范围就可以区分出大小写特殊字符 (实现以上方法均可调用java  jdk api原有的方法,楼主可以查阅下)
回复 使用道具 举报
赵顺超 来自手机 中级黑马 2014-7-31 00:15:54
藤椅
把字符串转成字符数组,然后for循环,判断是大写,还是小写还是数字还是字符,字符就是else,大写字母小写字母,数字对应有数值。定义4个计数器,是谁就加一,用if判断就行。然后打印结果。
回复 使用道具 举报
大概思路就是用ASCLL码咯 譬如要大写字母的  那就'A'<x&&x<'Z'  count++ 大概就这样 用for循环+if else语句轻松KO
回复 使用道具 举报
本帖最后由 简一 于 2014-7-31 02:01 编辑

敲了20分钟才敲明白 我也是个菜鸟
使用charAt方法  通过索引获取对应的字符
然后用for循环 遍历数组索引对应的字符
依次判断,如果找到了,累加。否则进入一下条件进行判断。


  1. package cn.itcast.lianxi;

  2. import java.util.Scanner;//导入util

  3. public class Demo123 {
  4.         /**
  5.          * @param args
  6.          *       String s = ABCDEabcd123456!@#$%^&
  7.          */
  8.         public static void main(String[] args) {
  9.                 Scanner sc = new Scanner(System.in);   //调用scanner
  10.                 System.out.println("请输入一个字符串:");                //输入字符串
  11.                 String str = sc.nextLine();                                //
  12.                 int big = 0;                                //定义大写计数器
  13.                 int small = 0;                                //..小写.....
  14.                 int num = 0;                                //..数字.....
  15.                 int other = 0;                                //..符号.....
  16.                  for (int i = 0; i < str.length(); i++) {                //遍历数组,每个字符都是什么
  17.                          char c = str.charAt(i);
  18.                          if( 'A' <= c && c <= 'Z'){                                                //进行判断
  19.                                  big++;
  20.                         }else if('a' <= c && c <= 'z'){
  21.                                 small++;
  22.                         }else if('0' <= c && c <= '9'){
  23.                                 num++;
  24.                         }else{
  25.                                 other++;
  26.                         }
  27.                 }
  28.                                                          //输出
  29.                          System.out.println("大写字母的个数为:"+big+"  小写字母的个数为:"+small+
  30.                                          "  数字的个数为:"+num+"  其他字符的个数为:"+other);
  31.         }
  32. }
复制代码


请输入一个字符串:
ABCDEabcd123456!@#$%^&
大写字母的个数为:5  小写字母的个数为:4  数字的个数为:6  其他字符的个数为:7
这个是运行结果
希望可以对你有帮助
回复 使用道具 举报
  1. public class Test {
  2.           
  3.           public static void main(String[] args) {
  4.                   String s = "ABCDEabcd123456!@#$%^&";
  5.                   int[] result = countByType(s);
  6.                   System.out.println("大写字母" + result[0] + "个");
  7.                   System.out.println("小写字母" + result[1] + "个");
  8.                   System.out.println("数字" + result[2] + "个");
  9.                   System.out.println("其他" + result[3] + "个");
  10.           }
  11.           
  12.           public static int[] countByType(String s) {
  13.                   
  14.                   int[] result = new int[4];
  15.                   char[] chars = s.toCharArray();
  16.                   
  17.                   for (char c : chars) {
  18.                           if (Character.isUpperCase(c))
  19.                                   result[0]++;
  20.                           else if (Character.isLowerCase(c))
  21.                                   result[1]++;
  22.                           else if (Character.isDigit(c))
  23.                                   result[2]++;
  24.                           else
  25.                                   result[3]++;
  26.                   }
  27.                   
  28.                   return result;
  29.           }
  30. }
复制代码
回复 使用道具 举报

写程序就要这样优先考虑API中的功能,别人有的直接用
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马