黑马程序员技术交流社区

标题: 字符串的操作 [打印本页]

作者: zhangx    时间: 2013-4-13 17:54
标题: 字符串的操作
本帖最后由 zhangx 于 2013-4-14 09:06 编辑

统计字母“n”和“o”在字符串want you to know one thing中出现的次数,这么写为什么不对?
public class Demo{
public static void main(String args[]){
  String str="you are a boy";
  char c[]=str.toCharArray();
  int count1=0;
  int count2=0;
  for(int i =0;i<c.length;i++){
   if(c.equals("n")){
    count1++;
    }
   if(c.equals("o")){
    count2++;
    }
   }
  System.out.println("字母n出现次数为"+count1);
  System.out.println("字母o出现次数为"+count2);
  }
}

作者: ①人←①城市    时间: 2013-4-13 18:03
本帖最后由 ①人←①城市 于 2013-4-13 18:24 编辑

字符串无法与字符进行比较的,可以把字符转换成字符串再进行比较.

判断条件(那个c后面的\[i\]显示不出):

//先转化为字符串,注意去掉程序中的"\"符号

String value=c\[i\]+"";

if ("n".equals(value)) {
     ..
}
if ("o".equals(value)) {
     ...
}

作者: 林声荣    时间: 2013-4-13 18:35
你上面的代码if(c[i].equals("n"))中调用equals()方法是String类中定义的方法,只能是String类型的才能使用,而你String str="you are a boy";char c[]=str.toCharArray();已经将字符串类型转换为字符类型,所以不得行了,
所以我们的将字符类型转换为字符串类型,一般常用方法 :字符 +""
所以代码改为:  if((c[i]+"").equals("n")){
    count1++;
    }
   if((c[i]+"").equals("o")){
    count2++;
    }



作者: Friendy89    时间: 2013-4-13 18:56
本帖最后由 Friendy89 于 2013-4-13 19:01 编辑

判断语句这样改就对了,楼下是程序,开始没发出来

作者: Friendy89    时间: 2013-4-13 19:00
if(c[i]=='n')
                                count1++;
                        if(c[i]=='o')
                                count2++;
作者: 黑马李强    时间: 2013-4-13 20:09
字符串中的equals方法是比较两个字符串是否相等,而char c[]=str.toCharArray()已经将字符串变成了字符数组,数组c中的数据时字符而不是字符串
所以应改为:
   if(c[i]=='n'){
    count1++;
    }
   if(c[i]=='o'){
    count2++;
    }
作者: 杨永胜    时间: 2013-4-13 20:20
地板正解,多熟悉下API
作者: lyg2013    时间: 2013-4-13 21:57
  1. equals
  2. public boolean equals(Object anObject)将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true。

  3. 覆盖:
  4. 类 Object 中的 equals
  5. 参数:
  6. anObject - 与此 String 进行比较的对象。
  7. 返回:
  8. 如果给定对象表示的 String 与此 String 相等,则返回 true;否则返回 false。
  9. 另请参见:
  10. compareTo(String), equalsIgnoreCase(String)
复制代码
而此程序中的C 为char型,不能比较、
你可用    static String valueOf(char c)
          返回 char 参数的字符串表示形式。

正确代码如下:
  1. package bbs;
  2. public class Demo{
  3. public static void main(String args[]){
  4.   String str="you are a boy";
  5.   char c[]=str.toCharArray();

  6.   int count1=0;
  7.   int count2=0;
  8.   for(int i =0;i<c.length;i++){
  9.    if(String.valueOf(c[i]).equals("n")){
  10.     count1++;
  11.     }
  12.    if(String.valueOf(c[i]).equals("o")){
  13.     count2++;
  14.     }
  15.    }
  16.   System.out.println("字母n出现次数为"+count1);
  17.   System.out.println("字母o出现次数为"+count2);
  18.   }
  19. }
复制代码





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