黑马程序员技术交流社区

标题: 小菜鸟求教 [打印本页]

作者: Havorld    时间: 2014-7-30 23:14
标题: 小菜鸟求教
给定一个字符串,计算出大写字母几个,小写字母几个,数字几个,其他的字符几个
String s = "ABCDEabcd123456!@#$%^&";
作者: DSY    时间: 2014-7-30 23:43
给楼主提供下思路,1、把字符串转换成字符数组 2、循环获取数组每个元素的ASCLL码,根据不同字符码值范围就可以区分出大小写特殊字符 (实现以上方法均可调用java  jdk api原有的方法,楼主可以查阅下)
作者: 赵顺超    时间: 2014-7-31 00:15
把字符串转成字符数组,然后for循环,判断是大写,还是小写还是数字还是字符,字符就是else,大写字母小写字母,数字对应有数值。定义4个计数器,是谁就加一,用if判断就行。然后打印结果。
作者: Imp_x    时间: 2014-7-31 00:40
大概思路就是用ASCLL码咯 譬如要大写字母的  那就'A'<x&&x<'Z'  count++ 大概就这样 用for循环+if else语句轻松KO
作者: 简一    时间: 2014-7-31 01:53
本帖最后由 简一 于 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
这个是运行结果
希望可以对你有帮助

作者: fantacyleo    时间: 2014-7-31 02:04
  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. }
复制代码

作者: hejinzhong    时间: 2014-7-31 06:00
fantacyleo 发表于 2014-7-31 02:04

写程序就要这样优先考虑API中的功能,别人有的直接用




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2