每日作业20200514 - 找出与 7 有关的数

题目

一个正整数,如果它能被 7 整除,或者它的某一位上的数字为 7,那么它是与 7 相关的数
输入 N, 打印 0~N 之间,7 无关的数字 以及 数字的数量

代码

import java.util.Scanner;

public class Homework0514 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("请输入一个正整数:");
        int num = sc.nextInt();     //接收输入

        System.out.println("方法1");
        int result1 = method1(num);  //调用方法,并接收返回值
        System.out.println("共有" + result1);  //打印结果

        System.out.println("--------------------------------------");

        System.out.println("方法2(推荐)");
        int result2 = method2(num);  //调用方法,并接收返回值
        System.out.println("共有" + result2);  //打印结果
    }

    /**
     * 方法1:通过将输入的数字转成字符串,放进字符数组里,遍历数组,判断元素是否为7
     * 不能被7整除 & 不含7
     * @param num 用户输入的数
     * @return  返回个数
     */
    public static int method1(int num) {
        int count = 0;      //计数器
        int temp = 0;       //临时变量

        for (int i = 0; i < num; i++){  //i 在 [0,num)之间循环
            temp = i;   //赋值
            if(temp % 7 != 0){  //不能被 7 整除
                String str = Integer.toString(temp);    //将 int 转成 String
                char[] c = str.toCharArray();   //放进数组
                boolean flag = true;    //默认不含7

                for(int j = 0; j < c.length; j++){  //循环判断,该数是否含有 7 这个字符
                    if (c[j] == '7'){
                        flag = false;   //含有7,则赋值 false
                    }
                }
                if (flag == true){  //不含7
                    count++;    //计数 +1
                    System.out.print(temp + ( temp % 10 == 9 ? "\n" : "\t"));   //打印
                }
            }
        }
        return count;   //返回值
    }

    /**
     * 方法2:通过将输入的数字转成字符串,调用 .indexOf() 方法,判断是否包含7
     * @param num
     * @return
     */
    public static int method2(int num) {
        int count = 0;      //计数器

        for (int i = 0; i < num; i++){  //i 在 [0,num)之间循环
            if (i % 7 != 0 & (String.valueOf( i ).indexOf("7") == -1)) {
                count++;
                System.out.print(i + ( i % 10 == 9 ? "\n" : "\t"));   //打印
            }
        }
        return count;   //返回值
    }
}

运行结果

请输入一个正整数:200
方法1
1	2	3	4	5	6	8	9
10	11	12	13	15	16	18	19
20	22	23	24	25	26	29
30	31	32	33	34	36	38	39
40	41	43	44	45	46	48	50	51	52	53	54	55	58	59
60	61	62	64	65	66	68	69
80	81	82	83	85	86	88	89
90	92	93	94	95	96	99
100	101	102	103	104	106	108	109
110	111	113	114	115	116	118	120	121	122	123	124	125	128	129
130	131	132	134	135	136	138	139
141	142	143	144	145	146	148	149
150	151	152	153	155	156	158	159
160	162	163	164	165	166	169
180	181	183	184	185	186	188	190	191	192	193	194	195	198	199
共有138
--------------------------------------
方法2(推荐)
1	2	3	4	5	6	8	9
10	11	12	13	15	16	18	19
20	22	23	24	25	26	29
30	31	32	33	34	36	38	39
40	41	43	44	45	46	48	50	51	52	53	54	55	58	59
60	61	62	64	65	66	68	69
80	81	82	83	85	86	88	89
90	92	93	94	95	96	99
100	101	102	103	104	106	108	109
110	111	113	114	115	116	118	120	121	122	123	124	125	128	129
130	131	132	134	135	136	138	139
141	142	143	144	145	146	148	149
150	151	152	153	155	156	158	159
160	162	163	164	165	166	169
180	181	183	184	185	186	188	190	191	192	193	194	195	198	199
共有138
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值