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

Java统计1到n中仅含0和1的十进制数代码运行异常如何修改

问题排查

原代码存在3个核心错误:

  • 外层遍历用的循环变量i被直接执行i = i / 10修改值,会彻底打乱外层循环的遍历逻辑,无法正常遍历1到n的所有整数
  • 没有给每个待判断的数单独做逐位检查的内层循环,逻辑结构缺失
  • 统计位数的变量c、r没有在每次判断新数前重置,会累加之前数值的统计结果,导致计数完全错误
修正后可正常运行的代码
import java.util.Scanner;
public class Main
{
    public static void main(String args[]) {
        int num;
        int count=0;
        Scanner sl = new Scanner(System.in);
        System.out.println("Enter a number");
        num = sl.nextInt();

        // 外层遍历1到输入值的所有整数
        for (int i = 1; i <= num; i++) {
            int validBitCount = 0;
            int totalBitCount = 0;
            // 用临时变量存储当前待判断的数,不修改外层的循环变量i
            int temp = i;
            // 内层循环逐位检查
            while(temp > 0) {
                int currentBit = temp % 10;
                if (currentBit == 0 || currentBit == 1) {
                    validBitCount++;
                }
                totalBitCount++;
                temp = temp / 10;
            }
            // 所有位都仅为0或1时计入总数
            if (validBitCount == totalBitCount) {
                count++;
            }
        }
        System.out.println(count);
    }
}
测试验证

输入测试值10时,程序输出2,符合预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 09:36:06