黑马程序员技术交流社区

标题: 统计字母出现的次数 [打印本页]

作者: 侯茂绵    时间: 2012-7-16 16:44
标题: 统计字母出现的次数
本帖最后由 侯茂绵 于 2012-7-16 22:36 编辑

class  StringDemo
{
        public static void main(String[] args)
       {
         
         int a=0;
         String str ="wo ai meimv";
   for (int i=0;i<str.length();i++)
     {
        
          if (str.charAt(i)=='m')
           {
                  a++;
           }
  System.out.println("m的次数:"+a);
    }
   }
}
为啥结果是:
m的次数:0
m的次数:0
m的次数:0
m的次数:0
m的次数:0
m的次数:1
m的次数:1
m的次数:1
m的次数:2
m的次数:2
不明白????????

作者: 孙新强    时间: 2012-7-16 16:49
System.out.println("m的次数:"+a);  这句代码的位置错了
修改后程序如下:
class  StringDemo
{
        public static void main(String[] args)
       {
         
         int a=0;
         String str ="wo ai meimv";
   for (int i=0;i<str.length();i++)
     {
        
          if (str.charAt(i)=='m')
           {
                  a++;
           }
    }
  System.out.println("m的次数:"+a);

   }
}



作者: 黑马刘涛    时间: 2012-7-16 16:53
  1. class  StringDemo
  2. {
  3.         public static void main(String[] args)
  4.        {
  5.          
  6.          int a=0;
  7.          String str ="wo ai meimv";
  8.    for (int i=0;i<str.length();i++)
  9.      {
  10.         
  11.           if (str.charAt(i)=='m')
  12.            {
  13.                   a++;
  14.            }
  15.   
  16.     }
  17.         System.out.println("m的次数:"+a);
  18.    }
  19. }
复制代码
System.out.println("m的次数:"+a);拿到外面去!
作者: 王冰    时间: 2012-7-16 16:54
class  StringDemo
{
        public static void main(String[] args)
       {
         
         int a=0;
         String str ="wo ai meimv";
        for (int i=0;i<str.length();i++)
        {
        
               if (str.charAt(i)=='m')
              {
                     a++;
              }
             //System.out.println("m的次数:"+a);//这句提到for循环外面就会实现只打印一次的效果了,不然就会循环一次打印一次,直到循环结束
         }
          System.out.println("m的次数:"+a); //改到这里就正常了
     }
}
作者: 鲍霄霄    时间: 2012-7-16 17:00
System.out.print放错位置了,输出的时候应该放到for外面,不然他是会跟着循环输出的

@6O}ATBU}3ELISTKTMRZZDF.jpg (35.11 KB, 下载次数: 128)

@6O}ATBU}3ELISTKTMRZZDF.jpg

作者: 李东升    时间: 2012-7-16 17:08
次数统计没错的,输出这么多次是因为你输出语句在for循环内部,所以才会循环一次打印一次。
作者: 位雪    时间: 2012-7-16 17:09
本帖最后由 位丹丹 于 2012-7-16 17:11 编辑
  1. class StringDemo
  2. {
  3.        public static void main(String[] args)
  4.       {
  5.            int a = 0;
  6.           String str = "wo ai meimv";
  7.           for (int i=0;i<str.length();i++)
  8.          {
  9.               if(str.charAt(i)=='m')
  10.              {
  11.                  a++;
  12.              }
  13.             System.out.println("m的次数:"+a);//你的输出语句是在for循环中,if语句每判断出一个'm',便会输出一次,所以会出现你的情况,应该把输出语句放在for循环外,即下面的位置,当然这个输出语句是要删除的
  14.        }
  15.      System.out.println("m的次数:"+a);
  16.     }
  17. }
复制代码

作者: 樊占江    时间: 2012-7-16 17:31
因为你的print在for循环里面,print应该放在循环外面。你可以试一试
作者: 乞文超    时间: 2012-7-16 21:56
class  StringDemo
{
        public static void main(String[] args)
    {
                int a=0;
        String str ="wodmaimeimv";
                char[] ch=str.toCharArray();
                for (int i=0;i<ch.length;i++)
                {
           if (ch[i]=='m')
                           a++;
                }
                System.out.println("m的次数:"+a);
    }
}
你出现的情况是由于你的打印语句在for循环中每一次的循环都会打印一次输出语句,你可以先把字符串编程字符数组,然后在进行比较,
作者: 侯茂绵    时间: 2012-7-16 22:35
位丹丹 发表于 2012-7-16 17:09

懂啦 谢谢:(




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