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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 侯茂绵 中级黑马   /  2012-7-16 16:44  /  2315 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 侯茂绵 于 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
不明白????????

9 个回复

倒序浏览
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);

   }
}


回复 使用道具 举报
  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);拿到外面去!
回复 使用道具 举报
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); //改到这里就正常了
     }
}

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
System.out.print放错位置了,输出的时候应该放到for外面,不然他是会跟着循环输出的

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

@6O}ATBU}3ELISTKTMRZZDF.jpg

评分

参与人数 1技术分 +1 收起 理由
韦念欣 + 1 赞一个!

查看全部评分

回复 使用道具 举报
次数统计没错的,输出这么多次是因为你输出语句在for循环内部,所以才会循环一次打印一次。
回复 使用道具 举报
位雪 中级黑马 2012-7-16 17:09:55
7#
本帖最后由 位丹丹 于 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. }
复制代码
回复 使用道具 举报
因为你的print在for循环里面,print应该放在循环外面。你可以试一试
回复 使用道具 举报
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 17:09

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