黑马程序员技术交流社区

标题: 关于字符串 [打印本页]

作者: zl78365336    时间: 2013-12-2 21:28
标题: 关于字符串
本帖最后由 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.     }
复制代码


作者: Jim-剣◆﹏    时间: 2013-12-2 22:07
直观地理解
if((i+1)==(c.length-1)){
                     System.out.println(c+"("+count+")");
                 }
就是判断下一个是否到达末尾

作者: aion2013tian    时间: 2013-12-2 22:44
  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条件语句中,继续判断。

作者: 汪洋大海    时间: 2013-12-2 22:52
Jim-剣◆﹏ 发表于 2013-12-2 22:07
直观地理解
if((i+1)==(c.length-1)){
                     System.out.println(c+"("+count+")");

梁兄到京城了吗?
作者: Jim-剣◆﹏    时间: 2013-12-2 23:30
汪洋大海 发表于 2013-12-2 22:52
梁兄到京城了吗?

木有啊,我计划是28期的,现在在校搞毕设呢,完了就上京,其实已经迫不及待了:#




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