黑马程序员技术交流社区

标题: 怎么求1到1000所有9出现的次数? [打印本页]

作者: chaojiwudi    时间: 2016-3-31 19:19
标题: 怎么求1到1000所有9出现的次数?
也就是1到1000内所有9的个数  详细 ,急用 考试用的: 要有步骤最好
作者: lyoivneg    时间: 2016-3-31 19:19
package com.heima.io;

public class Demo1_Nine {
        /*  把1到1000所有数字拆成单个的   所以用字符数组接收  拿字符数组所有元素和'9'比较相等自增
         * 1.获取1到1000 的所有数字
         * 2.把获取的所有数据转成字符串
         * 3.把所有的字符串转成字符数组 并遍历
         * 4.定义计数器num=0;  把遍历的字符数组和指定的9字符比较  如果一样就自增
         * 5.打印最终num的值
         */
        public static void main(String[] args) {
                 int num =0;
         for (int i = 0; i<=1000; i++) {     //遍历1到  1000的所有int数         
              
             String s=Integer.toString(i);       //数字转成字符串
                 
                char[] arr=s.toCharArray();      //字符串转成字符数组
                    for(char c : arr){               //用增强for循环 遍历
                            if('9'==c){                  //判断得到的字符是否和字符'9'相等
                                    num++;
                                }       
                      }
             }
             System.out.println(num);        //打印
        }   

}       


作者: lyoivneg    时间: 2016-3-31 19:21
把每个数遍历出来  然后对比 看看里面有没有9 有就自增1  周末答题都有这一题
作者: yangxiong    时间: 2016-3-31 19:47
是不是来送分的
作者: biu    时间: 2016-3-31 19:55
int count = 0 ;
                for(int i = 0; i <= 1000; i++) {
                        String s = i +"";
                        while(s.indexOf("9") != -1) {
                                System.out.println("当前数字为" + i);
                                count++;
                                s = s.substring(s.indexOf("9") + 1);
                        }
                }
                System.out.println("一共有" + count + "个9");
作者: Max灬xu    时间: 2016-3-31 21:28
600个  代码已上传

Num9.zip

420 Bytes, 阅读权限: 100, 下载次数: 0

600吧


作者: Max灬xu    时间: 2016-3-31 21:30
用int数字做的,没有转换
作者: 啊海    时间: 2016-3-31 21:43
  1. class Demo{ // 类名

  2.         public static void main(String[] args) {
  3.                 /*
  4.                         分析:1到1000内的所有9的个数有个位、十位、百位
  5.                         那么只要取出个位、十位、百位上的9也就是他们分别出现的次数
  6.                         就是9的个数。

  7.                         1.定义三个变量用来分别求个位、十位、百位
  8.                         2.用for循环来遍历1到1000内所有的数
  9.                         3.将个位、十位、百位每次出现的9进行累加
  10.                         4.最后把所有出现的9的次数进行相加就是9的个数。
  11.                 */
  12.                 int a=0;
  13.                 int b=0;
  14.                 int c=0;
  15.                 for(int i=0;i<1000;i++){
  16.                         //取出个位
  17.                         if(i%10==9)
  18.                                 a++;
  19.                         if(i/10%10==9)
  20.                                 b++;
  21.                         if(i/100%10==9)
  22.                                 c++;
  23.                 }
  24.                 System.out.println(a+b+c);
  25.        }
  26. }
复制代码

作者: 啊海    时间: 2016-3-31 21:44
class DemoForDay05 { // 类名

        public static void main(String[] args) {
                /*
                        分析:1到1000内的所有9的个数有个位、十位、百位
                        那么只要取出个位、十位、百位上的9也就是他们分别出现的次数
                        就是9的个数。

                        1.定义三个变量用来分别求个位、十位、百位
                        2.用for循环来遍历1到1000内所有的数
                        3.将个位、十位、百位每次出现的9进行累加
                        4.最后把所有出现的9的次数进行相加就是9的个数。
                */
                int a=0;
                int b=0;
                int c=0;
                for(int i=0;i<1000;i++){
                        //取出个位
                        if(i%10==9)
                                a++;
                        if(i/10%10==9)
                                b++;
                        if(i/100%10==9)
                                c++;
                }
                System.out.println(a+b+c);
}
作者: zhangtaocg    时间: 2016-3-31 21:44
提供个思路,把0-1000中的数遍历,然后转化为字符串,然后用正则表达式匹配
作者: pursol    时间: 2016-3-31 21:53
10楼的思路不错顶
作者: Max灬xu    时间: 2016-3-31 22:13
Max灬xu 发表于 2016-3-31 21:28
600个  代码已上传

这是个2000个数字的  改一下就行
作者: lavenderlmm    时间: 2016-3-31 22:53
public class GetCountFor9 {

        public static void main(String[] args) {               
                System.out.println("1~1000之间9出现的次数为:" + getCount());

        }
       
        public static int getCount(){
                int ge = 0;
                int shi = 0;
                int bai = 0;
               
                for (int i = 1;i < 1000;i++){
                        //个位
                        if (i % 10 == 9){
                                ge ++;
                        }
                        //十位
                        if (i / 10 % 10 == 9){
                                shi ++;
                        }
                        //百位
                        if (i / 100 % 10 == 9){
                                bai ++;
                        }
                       
                }
               
                return ge + shi + bai;
        }
}
作者: ping3014    时间: 2016-3-31 23:01
送你一个更强大的.....

day0330_test1.zip

7.49 KB, 阅读权限: 100, 下载次数: 0


作者: qq771711301    时间: 2016-3-31 23:25
请查收

Demo.zip

744 Bytes, 下载次数: 182


作者: cxy374100657    时间: 2016-3-31 23:42
写一个循环,进行遍历、去判断
作者: LiuLiu006    时间: 2016-4-1 00:19
学习了..................
作者: Ak-47    时间: 2016-4-1 02:29
public class Demo2 {
        public static void main(String[] args) {
                int count = 0 ;
                for (int i = 0; i <= 1000; i++) {
                        if (i % 10 == 9 | i / 10 % 10 == 9 | i / 10 / 10 % 10 ==9 ) {
                                count++;
                        }
                }
                System.out.println(count);
        }
}
新手写的一个,不知道对不对,大神品论下,轻喷啊
作者: 420982    时间: 2016-4-1 13:18
Ak-47 发表于 2016-4-1 02:29
public class Demo2 {
        public static void main(String[] args) {
                int count = 0 ;

,,,,,,,,,,,,,,
作者: dwt1397261    时间: 2016-4-2 16:08
class Demo{ // 类名

        public static void main(String[] args) {
                /*
                        分析:1到1000内的所有9的个数有个位、十位、百位
                        那么只要取出个位、十位、百位上的9也就是他们分别出现的次数
                        就是9的个数。

                        1.定义三个变量用来分别求个位、十位、百位
                        2.用for循环来遍历1到1000内所有的数
                        3.将个位、十位、百位每次出现的9进行累加
                        4.最后把所有出现的9的次数进行相加就是9的个数。
                */
                int a=0;
                int b=0;
                int c=0;
                for(int i=0;i<1000;i++){
                        //取出个位
                        if(i%10==9)
                                a++;
                        if(i/10%10==9)
                                b++;
                        if(i/100%10==9)
                                c++;
                }
                System.out.println(a+b+c);
       }
}
作者: yangxiong    时间: 2016-4-2 21:46
{:2_33:}hhhhhh
作者: hardeas    时间: 2016-4-4 14:29
Ak-47 发表于 2016-4-1 02:29
public class Demo2 {
        public static void main(String[] args) {
                int count = 0 ;

亲,不好意思你的答案是错的.   题目是 1-1000 所有9出现的次数,比如999 就是3次了. 你这个条件 只会进行1次判断喔.
作者: Petergee    时间: 2016-4-9 16:38
回答中提供了很多实现的方法和思路,学习了
作者: sfz6012    时间: 2016-4-11 23:46
我现在所学,只能看明白9楼的思路
作者: 逆击穹霄    时间: 2016-4-17 02:57
确实学到了
作者: sfz6012    时间: 2016-4-29 22:48
这个看你学到哪了,如果学了string这个类    会有很多种方法的
作者: 风云1989    时间: 2016-12-14 09:21
Max灬xu 发表于 2016-3-31 21:28
600个  代码已上传

不是300个么?

作者: Rhwan    时间: 2017-1-10 18:26
可以用正则表达式,也可以用String的contains。

作者: 时光未桀    时间: 2017-1-15 12:57
肯定要个十百千位上有9的提出来,再定义count让他++





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