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
相关产品推荐
相关产品推荐

