题目:判断101~200之间有多少个奇数,并输出所有奇数

代码:

public class Test {
    public static void main(String[] args) {
        // 测试数据
        int a = 101;
        int b = 200;
        // 提示语
        System.out.println(a + "和" + b + "之间的所有奇数如下:");
        // 调用测试方法
        System.out.println(a + "和" + b + "之间有" + getOddNum(a, b) + "个奇数");
    }

    /**
     * 获得两个值之间的奇数个数
     *
     * @param a 开始值
     * @param b 结束值
     * @return
     */
    private static int getOddNum(int a, int b) {
        // 奇数个数
        int num = 0;
        // 存储所有的奇数
        StringBuilder sb = new StringBuilder();
        // 只要遍历完了,那就可以了
        while (a <= b) {
            // 奇数个数加1
            num++;
            // 将奇数存储到里面
            sb.append(a).append(" ");
            // 在原来奇数的基础上加2,然后就找到了下一个奇数
            a += 2;
        }
        // 输出所有奇数
        System.out.println(sb.toString());
        // 返回奇数个数
        return num;
    }
}

结果:

101200之间的所有奇数如下:
101 103 105 107 109 111 113 115 117 119 121 123 125 127 129 131 133 135 137 139 141 143 145 147 149 151 153 155 157 159 161 163 165 167 169 171 173 175 177 179 181 183 185 187 189 191 193 195 197 199 
101200之间有50个奇数

解释:

其实这道题并不难,我认为考察的点是代码执行效率,最直接的思路是通过对2取余进行判断,不过我们都知道奇数加2后肯定是一个奇数,或者偶数加上2肯定是一个偶数,所以根据这个常识就可以省去了判断环节,因此效率更高,另外我还在里面使用了StringBuilder可变字符串对象,这也可以提高效率

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值