You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:统计指定数值范围内包含数字4的整数个数

统计数值范围内包含数字4的整数个数问题解答

我明白你现在需要实现一个功能:统计给定两个整数之间(包含两端)所有含有数字4的整数的个数,比如1-100范围内符合条件的数有19个。看你已经写了部分Java代码但卡住了,我来帮你把代码补全并解释清楚关键逻辑。

首先,先看你未完成的代码里的小问题:你把Scanner对象放在了while(true)循环内部,这样每次循环都会创建新的Scanner实例,容易造成资源浪费;另外num2的输入代码没写完。我们先把这些问题修正,再实现核心的判断逻辑。

完整实现代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        int count = 0;
        Scanner input = new Scanner(System.in); // 将Scanner放在循环外,避免重复创建

        while (true) {
            System.out.println("请输入两个整数(用空格分隔,输入非整数可退出):");
            if (!input.hasNextInt()) {
                System.out.println("输入结束,程序退出");
                break;
            }
            int num1 = input.nextInt();
            int num2 = input.nextInt();

            // 确保num1是较小值,num2是较大值,处理用户输入顺序颠倒的情况
            int start = Math.min(num1, num2);
            int end = Math.max(num1, num2);
            count = 0;

            // 遍历范围内的每个数,检查是否包含数字4
            for (int i = start; i <= end; i++) {
                if (containsFour(i)) {
                    count++;
                }
            }

            System.out.printf("在%d到%d范围内,包含数字4的整数共有%d个%n", start, end, count);
        }
        input.close(); // 关闭Scanner资源
    }

    // 辅助方法:判断一个整数是否包含数字4
    private static boolean containsFour(int num) {
        // 处理负数的情况(如果用户输入负数)
        num = Math.abs(num);
        do {
            int digit = num % 10;
            if (digit == 4) {
                return true;
            }
            num = num / 10;
        } while (num > 0);
        return false;
    }
}

关键逻辑解释

  • Scanner资源优化:把Scanner实例放在循环外部创建,循环结束后关闭,避免重复创建和销毁资源。
  • 范围边界处理:用Math.min和Math.max确保遍历的起始值是较小数,结束值是较大数,不管用户输入的顺序如何都能正确统计。
  • 数字判断辅助方法:containsFour方法专门负责判断单个数字是否包含4,通过取余和整除操作逐位检查每一位数字,同时处理了负数的情况(如果用户输入负数的话)。
  • 循环退出逻辑:当用户输入非整数时,程序会退出循环,避免无限循环无法终止。

测试验证

当你输入1 100时,程序会输出在1到100范围内,包含数字4的整数共有19个,和你给出的示例结果一致,验证了逻辑的正确性。

内容的提问来源于stack exchange,提问作者Zuher Abud

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:47:01