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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© zhangx 中级黑马   /  2013-4-13 17:54  /  1837 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 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);
  }
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

7 个回复

倒序浏览
本帖最后由 ①人←①城市 于 2013-4-13 18:24 编辑

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

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

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

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

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

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
你上面的代码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++;
    }


评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 Friendy89 于 2013-4-13 19:01 编辑

判断语句这样改就对了,楼下是程序,开始没发出来
回复 使用道具 举报
if(c[i]=='n')
                                count1++;
                        if(c[i]=='o')
                                count2++;

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
字符串中的equals方法是比较两个字符串是否相等,而char c[]=str.toCharArray()已经将字符串变成了字符数组,数组c中的数据时字符而不是字符串
所以应改为:
   if(c[i]=='n'){
    count1++;
    }
   if(c[i]=='o'){
    count2++;
    }

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
地板正解,多熟悉下API
回复 使用道具 举报
  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. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马