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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zl78365336 中级黑马   /  2013-12-2 21:28  /  1003 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 zl78365336 于 2013-12-3 13:26 编辑

以下是将字符串打印成a(2)b(3)c(5)的函数。
其中这个代码是什么意思?
               if((i+1)==(c.length-1)){
                    System.out.println(c+"("+count+")");
                }


  1. public static void function(String str){
  2.         char[] c = str.toCharArray()
  3.         Arrays.sort(c)
  4.         int count=1
  5.         for(int i=0;i<c.length-1;i++){

  6.             if(!((c[i]>='a'&&c[i]<='z')||(c[i]>='A'&&c[i]<='Z'))){
  7.                 continue;
  8.             }
  9.             if(c[i]==c[i+1]){
  10.                 count++;
  11.                 if((i+1)==(c.length-1)){
  12.                     System.out.println(c[i]+"("+count+")");
  13.                 }
  14.             }else{
  15.                 System.out.print(c[i]+"("+count+")");
  16.                 count=1;
  17.             }
  18.         }
  19.     }
复制代码

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

4 个回复

倒序浏览
直观地理解
if((i+1)==(c.length-1)){
                     System.out.println(c+"("+count+")");
                 }
就是判断下一个是否到达末尾
回复 使用道具 举报
  1. public static void function(String str) {
  2.                 char[] c = str.toCharArray();
  3.                 Arrays.sort(c);
  4.                 int count = 1;
  5.                 //遍历数组(除数组最后一位字符以外的字符)
  6.                 for (int i = 0; i < c.length - 1; i++) {

  7.                         if (!((c[i] >= 'a' && c[i] <= 'z') || (c[i] >= 'A' && c[i] <= 'Z'))) {
  8.                                 continue;
  9.                         }
  10.                         if (c[i] == c[i + 1]) {
  11.                                 count++;
  12.                                 //数组的i位与i+1位相同,判断i+1是否是数组的最后一位,如是,则打印结果
  13.                                 if ((i + 1) == (c.length - 1)) {
  14.                                         System.out.println(c[i + 1] + "(" + count + ")");
  15.                                 }
  16.                         } else {
  17.                                 System.out.print(c[i] + "(" + count + ")");
  18.                                 count = 1;
  19.                                 //数组的i位与i+1位不相同,判断i+1是否是数组的最后一位,如是,则打印结果
  20.                                 if ((i + 1) == (c.length - 1)) {
  21.                                         System.out.println(c[i + 1] + "(" + count + ")");
  22.                                 }
  23.                         }
  24.                 }
复制代码
上面是正确的代码,楼主所述的那段if语句的代码是用来判断i+1位是否已经是数组的最后一位,因为数组为了保证c[i+1]在数组中,所以不能通过for循环遍历到数组的最后一位,只能在内部代码的if条件语句中,继续判断。

评分

参与人数 1技术分 +1 收起 理由
简★零度 + 1

查看全部评分

回复 使用道具 举报
Jim-剣◆﹏ 发表于 2013-12-2 22:07
直观地理解
if((i+1)==(c.length-1)){
                     System.out.println(c+"("+count+")");

梁兄到京城了吗?
回复 使用道具 举报

木有啊,我计划是28期的,现在在校搞毕设呢,完了就上京,其实已经迫不及待了:#
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马