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

为何1-100数值限制代码未生效且被跳过?

Java质数判断代码的输入限制与逻辑错误修复

问题分析

你的代码存在三个关键问题,导致输入限制失效且质数判断逻辑完全错误:

  • 输入范围判断逻辑矛盾:num <= 0 && num > 100 没有任何数值能同时满足这两个条件,应该用||(或运算符)判断num < 1 || num > 100。
  • 范围判断位置错误:你把输入合法性判断放在了质数判断的分支里,只有当质数判断不成立时才会触发,但此时非法输入已经进入了质数计算逻辑,应该先验证输入合法性,再执行质数判断。
  • 质数判断核心逻辑错误:num % 1 == 00 永远为真(任何数模1余数都是0),导致count的值等于输入的num,永远无法触发质数的判断条件(count == 2),正确的逻辑是遍历i时判断num % i == 0,统计能整除num的因数数量。

修正后的基础版本代码

import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        System.out.println("introduza um numero entre 1 e 100: "); // 提示输入1-100之间的数
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();

        // 先判断输入是否合法,非法直接提示并结束
        if (num < 1 || num > 100) {
            System.out.println("Reler enunciado"); // 提示重新查看题目要求
            sc.close();
            return;
        }

        int count = 0;
        // 遍历1到num,统计因数个数
        for (int i = 1; i <= num; i++) {
            if (num % i == 0) {
                count++;
            }
        }

        // 判断是否为质数
        if (count == 2) {
            System.out.println("É número primo"); // 是质数
        } else {
            System.out.println("Não é número primo"); // 不是质数
        }
        sc.close();
    }
}

进阶优化:循环获取合法输入

如果想让用户输入非法数值时重复提示,直到输入合法为止,可以用do-while循环实现:

import java.util.Scanner;

public class PrimeChecker {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int num;

        // 循环获取输入,直到合法为止
        do {
            System.out.println("introduza um numero entre 1 e 100: ");
            num = sc.nextInt();
            if (num < 1 || num > 100) {
                System.out.println("Reler enunciado");
            }
        } while (num < 1 || num > 100);

        int count = 0;
        for (int i = 1; i <= num; i++) {
            if (num % i == 0) {
                count++;
            }
        }

        if (count == 2) {
            System.out.println("É número primo");
        } else {
            System.out.println("Não é número primo");
        }
        sc.close();
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:01:01