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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 简一 于 2014-8-1 20:37 编辑
  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. }
复制代码
今天学的,刚刚敲完,想知道是否能把这个写的短小精炼一点,个人觉得看起来好乱,求大神帮忙修改。

4 个回复

正序浏览
简一 来自手机 中级黑马 2014-7-31 08:00:43
报纸
王广丛 发表于 2014-7-31 06:29
其实可以通过Map来实现,个人该绝map应该效率更高,代码更简练

非常感谢,我会去看看的,刚刚开始学。
回复 使用道具 举报
简一 来自手机 中级黑马 2014-7-31 07:59:38
板凳
hejinzhong 发表于 2014-7-31 06:40
public class Test
{
          public static void main(String[] args)

谢谢,我会好好去看看的。
回复 使用道具 举报
本帖最后由 hejinzhong 于 2014-7-31 06:49 编辑

public class Test
{
          public static void main(String[] args)
         {
                  String s = "djhaskUGAUIF728&!";
                  int[] result = coun(s);
                  System.out.println("大写" + result[0] );
                  System.out.println("小写" + result[1]);
                  System.out.println("数字" + result[2]);
                  System.out.println("其他" + result[3]);
          }
          public static int[] count(String s)
          {
                  int[] result = new int[4];
                  char[] chars = s.toCharArray();
                  for (char c : chars)
                 {
                          if (Character.isUpperCase(c))
                                  result[0]++;
                          else if (Character.isLowerCase(c))
                                  result[1]++;
                          else if (Character.isDigit(c))
                                  result[2]++;
                          else
                                  result[3]++;
                  }           
                  return result;
          }
}
回复 使用道具 举报
其实可以通过Map来实现,个人该绝map应该效率更高,代码更简练
  1. import java.util.Iterator;
  2. import java.util.Map;
  3. import java.util.Set;
  4. import java.util.TreeMap;

  5. public class Test {
  6.         public static void main(String[] args) throws Exception {
  7.                
  8.                 String s = "baedafdsaj....sdafas";
  9.                 //获取各个字符出现的次数并输出
  10.                 TreeMap<Character,Integer> map = charCount(s);
  11.                 Set<Map.Entry<Character,Integer>> entrySet = map.entrySet();
  12.                 Iterator<Map.Entry<Character,Integer>> it = entrySet.iterator();
  13.                 while(it.hasNext()){
  14.                         Map.Entry<Character,Integer> entry = it.next();
  15.                         System.out.println(entry.getKey()+":"+entry.getValue()+"次");
  16.                 }               
  17.         }
  18.        
  19.         /**
  20.          * 得到一个TreeMap的方法,其中key值为字符串中对应的各个字符,Value值为字符出现的次数
  21.          * @param str
  22.          * @return
  23.          */
  24.         public static TreeMap<Character,Integer> charCount(String str){
  25.                 //将此字符串转换成一个字符数组
  26.                 char[] ch = str.toCharArray();
  27.                 TreeMap<Character,Integer> map = new TreeMap<Character,Integer>();
  28.                 for(char c : ch){                       
  29.                         if(c==' '||c=='\t'){//如果是空字符或者是Tab键字符,则不执行下面的操作
  30.                                 continue;
  31.                         }
  32.                         if(map.containsKey(c)){//判断map中是的key值是否有字符串c,如果有则让value值加1,没有则value值存入1
  33.                                 int num = map.get(c);
  34.                                 map.put(c, num+1);
  35.                         }else{
  36.                                 map.put(c, 1);
  37.                         }
  38.                 }               
  39.                 return map;
  40.         }
  41. }
复制代码
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马