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

Java提取数字各位并筛选质数数字的代码调试求助

问题排查与修正

你的代码核心问题是变量i和c没有在每次处理单个数字位时重置:

  • i和c在循环外初始化,第一次处理完个位数字后,i会保留上一次循环结束后的数值,后续处理十位、百位时,内层循环的起始值不对,直接跳过判断;
  • c会累计之前所有数字的因数计数,导致质数判断逻辑完全失效。

修正后的代码

import java.util.Scanner;

public class PrimeDigits {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n, d;
        System.out.println("Enter a number");
        n = in.nextInt();
        // 用字符串拼接结果,保证输出格式为逗号分隔
        StringBuilder result = new StringBuilder();
        
        while (n > 0) {
            d = n % 10;
            int i = 1;
            int c = 0;
            // 判断当前数字是否为质数
            while (i <= d) {
                if (d % i == 0) {
                    c++;
                }
                i++;
            }
            // 质数的因数只有1和自身,即c==2;同时自动排除0和1(非质数)
            if (c == 2) {
                if (result.length() > 0) {
                    result.append(", ");
                }
                result.append(d);
            }
            n = n / 10;
        }
        
        // 输出最终结果
        System.out.println(result);
        in.close();
    }
}

关键修改点

  • 将int i=1, c=0;移到外层while循环内部,每次处理新的数字位时,重置因数计数器和循环变量;
  • 添加StringBuilder拼接结果,保证输出格式和示例一致(如输入762输出7, 2);
  • 自动过滤0和1:这两个数的因数计数c不会等于2,符合质数定义(大于1的自然数,仅能被1和自身整除)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:55:19