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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 尹善波 中级黑马   /  2012-6-29 18:08  /  4500 人查看  /  30 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 菠菜(yinshi) 于 2012-6-30 14:32 编辑

在0~99之间的一百个整数中计算数字5出现的次数,并将带有数字5的组合输出。

30 个回复

倒序浏览
这样的问题我觉得还是自己去练习比较好,毕竟视频里面有教的,并且毕老师视频里的代码不用怎么改动就能完成你的这个问题了。
回复 使用道具 举报
本帖最后由 邵阳 于 2012-6-29 18:36 编辑

看楼下,我写错啦
回复 使用道具 举报
呵呵,我不知道这是帮你还是害你,不过你既然问了,我就把答案给你弄上来了
        public static void main(String[] args) throws IOException {
                // TODO Auto-generated method stub
                int i=0;//用来统计5出现的次数
                for(int i=0;i<=99;i++){//负责循环遍历0-99
                        if(i/10==5 || i%10==5){//这个是用来判断当前数字是不是含5
                                System.out.println(i);
                                i++;//每找到一个I+1
                        }
                }
                System.out.println("5一共出现了"+i+"次");//输出5出现的次数
        }

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
public class Test
{
        public static void main(String[] args)
        {
                int count = 0;
                for(int i = 1; i < 99; i++)
                {
                        if(i % 5 == 0 && i % 10 != 0 )
                        {
                                System.out.printf(i + " ");
                                count++;
                        }
                }
                System.out.println("\n5出现的次数: " + (count + 1));
        }
}
写的比较简单,注意只是在0 - 100以内是对的啊,如果是三位数,可能有  950  同时可以被5和10整除的 还有955等出现多个5的,若想写一个在任意范围内都行的算法,我的思路是,首先筛选出能够被5整除的数,缩小范围,然后在逐个去处理这个数中5出现的次数。
回复 使用道具 举报
谭立文 发表于 2012-6-29 18:30
public class Test
{
        public static void main(String[] args)

你写错啦啊,50,51,52这些你没算上啊,刚才我都这么写的又删啦
回复 使用道具 举报
邵阳 发表于 2012-6-29 18:39
你写错啦啊,50,51,52这些你没算上啊,刚才我都这么写的又删啦

额只想图效率了
回复 使用道具 举报
在这里给楼主说声抱歉啊,考虑不周。
重新写了一下
public class Test

{

        public static void main(String[] args)
        {

               int start = 0;
               int end = 100;
               int count = 0;
               for(int i = start; i < end; i++)
               {
                       int data = i;
                       boolean isHaveFive = false;
                      while(data > 0)
                      {
                              int m = data % 10;
                              if(m == 5)
                              {
                                      isHaveFive = true;
                                      count++;
                              }
                              data /= 10;
                      }
                      if(isHaveFive)
                      {
                              System.out.print(i + " ");
                      }
               }
               System.out.println("\n5一共出现的次数:" + count);
               
        }

}
回复 使用道具 举报
游洪波 发表于 2012-6-29 18:29
呵呵,我不知道这是帮你还是害你,不过你既然问了,我就把答案给你弄上来了
        public static void main(Stri ...

哥们55中有两个5,还真不要觉得题目简单,我刚才也写错了,尴尬了。
回复 使用道具 举报
思想:
1定义一个计数器
2for循环1~99
3循环内判断这个数除5或除50取余,有一个条件为真即为真。
4循环内计数器加1
5循环结束
6打印计数器
程序我没写,我同意游洪波的,但不知为什么抛异常啊{:soso_e132:}
也许不对,你试下吧。

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1 5 50 逐位取比较好点

查看全部评分

回复 使用道具 举报
本帖最后由 邵阳 于 2012-6-30 16:22 编辑
谭立文 发表于 2012-6-29 19:03
在这里给楼主说声抱歉啊,考虑不周。
重新写了一下
public class Test


你写的太复杂啦精简了一下,还好理解
class Test
{
        public static void main(String[] args)
        {
                        int count=0;
                        
            for(int i = 0; i < 100; i++)
            {
                                int num=i;
                 while(num > 0)
               {
                                        if(i % 10==5)
                                        {
                                                count=count+1;
                                        }
                                        num/= 10;
                                }                                          
            }
            System.out.println("一共出现的次数:" + (count));
               
        }

}

我上面的代码写错啦,大家不要看啦
回复 使用道具 举报
邵阳 发表于 2012-6-29 21:22
你写的太复杂啦精简了一下,还好理解
class Test
{

方法有很多啊,不一定非得这么写啊。
回复 使用道具 举报
游洪波 发表于 2012-6-29 18:29
呵呵,我不知道这是帮你还是害你,不过你既然问了,我就把答案给你弄上来了
        public static void main(Stri ...

已经定义了i,不能在后面定义了啊。所以你的错啦。改为int  num=0  
System.out.println("5一共出现了"+num+"次");
回复 使用道具 举报
谭立文 发表于 2012-6-29 19:03
在这里给楼主说声抱歉啊,考虑不周。
重新写了一下
public class Test

哥们在、你代码里面   data/=10  有什么作用啊
回复 使用道具 举报
本帖最后由 罗文杰 于 2012-6-29 22:40 编辑

{:soso_e176:}我提供一个思路吧,但是楼主自己实现下吧。
思路: 遍历数字,把数字转成String, 然后用contain方法判断是否包含"5",包含就加把技术器加1(中间加上判断这个字符串是不是"55",是的话就加计数器就加2)。代码上应该还是很好实现的。
回复 使用道具 举报
邵阳 发表于 2012-6-29 22:18
哥们在、你代码里面   data/=10  有什么作用啊

有什么不对吗?比如 45678 中有5  所以把这五个数拆分了啊
45678 > 0
45678 % 10 = 8 != 5;
45678 / 10 = 4567
后面不用解释了吧

评分

参与人数 1技术分 +2 收起 理由
刘蕴学 + 2

查看全部评分

回复 使用道具 举报

提供一个新的思路吧,不足之处请大家斧正哈。

本帖最后由 孔令金 于 2012-6-30 07:40 编辑

提供一个新的思路吧,不足之处请大家斧正哈。
    public static void main(String[] args) {
        int k = 0;//用来统计5出现的次数
        for (int i = 0; i <= 9; i++) {
            for (int j = 0; j <= 9; j++) {
                if (i == 5 || j == 5) {
                    System.out.println(i * 10 + j);
                    k++;
                    if (i == 5 && j == 5) {//出现55的情况
                        k++;
                    }
                }
            }
        }
        System.out.println("出现5的次数:" + k);//输出5出现的次数
    }

评分

参与人数 1技术分 +1 收起 理由
刘蕴学 + 1

查看全部评分

回复 使用道具 举报
罗文杰 发表于 2012-6-29 22:37
我提供一个思路吧,但是楼主自己实现下吧。
思路: 遍历数字,把数字转成String, 然后用conta ...

这个方法挺不错,不知哪位大神仙出神力实现一下下
回复 使用道具 举报
邵阳 发表于 2012-6-29 21:22
你写的太复杂啦精简了一下,还好理解
class Test
{

神妙
:)
回复 使用道具 举报
谭立文 发表于 2012-6-29 23:25
有什么不对吗?比如 45678 中有5  所以把这五个数拆分了啊
45678 > 0
45678 % 10 = 8 != 5;

原来是这样啊,受教了,谢了
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马