java实现逢7过案例

        这是一个小时候常玩的一个游戏,一时兴起,将其转换为代码,在浏览了部分相同案例,发现大多存在的案例,在判断是否为包含7,或者是7的倍数时所使用的规则如下:

if(num / 7 == 0 || num / 10 % 10 == 7 || num % 10 == 7 ){
    ......
}

        这个规则是成立的,但是也同样是有限的,当数量超过1000时,百位数无法进行识别,必然性的就会产生需求错误,此时需要再增加百位数判断即可。(ps:虽然现实中游玩此游戏不可能报出数字过大,上百属实少见)

        但好奇心总是要有的,超过100、1000、10000之后的逢7数会有哪些,人力计算肯定是费劲的,那就让代码来试一试。

 public static void main(String[] args) {
        /**
         * 案例:逢7过
         * 需求:从任意数开始,当数字包含7或者是7的倍数,则报过,否则输出数字
         *
         * 分析:
         * 7、17、27、37、47、57、67、70-79、87、97....非法
         * 14、21、28、35、42、49、56、63....非法
         * 倍数使用7整除余数为0即可判断
         * 包含7,可采用(77 / 10 % 10 )取出十位,(17 % 10)取个位判断,
         * 此处因不设置计数范围,因此采用获取个、十、百...等各个位置上的数字
         * 判断当前位置是否为7
         */
        //定义开始数字和结束数字
        int startNum,endNum;
        //定义两个键盘输入器
        System.out.println("请输入开始数字");
        Scanner startNumSc = new Scanner(System.in);
        startNum = startNumSc.nextInt();
        System.out.println("请输入结束数字");
        Scanner endNumSc = new Scanner(System.in);
        endNum = endNumSc.nextInt();
        //循环判断
        while (startNum<=endNum){
            //设置临时变量,将变量转化为字串,方便捕捉各个位数是否存在7
            String temp = new Integer(startNum).toString();
            int len = temp.length();
            //设置result作为后续判断当前数字是否为含7数的辅助变量
            boolean result = false;
            //循环判断是否包含7,若包含7,则修改result,判定为需跳过数
            for (int i = 0 ; i < len; i++){
                if (temp.charAt(i) == '7'){
                    result = true;
                }
            }
            //输出结果
            if (result ||startNum % 7 == 0){
                System.out.println("过 ");
            }else {
                System.out.println(startNum+" ");
            }
            startNum++;
        }
    }

        这里使用的规则,是选择将输入的开始数字(startNum)进行String类型转换,通过chatAt()来判断每个位置的字符时候为7 ,这样就不需要在数字位数不断上涨后,人工的去增加判断位数算法。

        这段代码个人测试是没有问题的,当然有更好的写法,或者程序有误欢迎指出,新人编程,喷轻点^ v ^

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶尘风秋

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值