package checkPrime;

import java.util.Scanner;

public class CheckPrime {

    public static void main(String[] args) {

        boolean isPrime = true;

        Scanner scanner = new Scanner(System.in);

        System.out.print("Enter a number: ");
        int n = scanner.nextInt();

        scanner.close();

        for (int i = 2; i < n; i++) {

            if (n % i == 0) {

                isPrime = false;

            }

        }

        if (isPrime = false || n == 1) {

            System.out.print(n + " is not prime.");

        } else {

            System.out.print(n + " is prime.");

        }

    }

}


因此,我编写了该程序来检查数字是否为质数,并且是否工作良好,但是在声明布尔值“ isPrime”的行上出现此错误:“未使用局部变量isPrime的值。”它并没有影响程序的功能,但我想知道是否有任何方法可以使它消失。

最佳答案

您在这里犯了一个错误:

if (isPrime = false || n == 1) {


应该是:

if (isPrime == false || n == 1) {
            ^^
      double equals!


出现警告的原因是,如果没有双等号,您将分配给isPrime而不是将其与false进行比较。如果您在此处进行操作,则在整个程序中,您只分配了isPrime,但从未使用过其值。

顺便说一句,赋值语句对赋给它的值求值,因此isPrime = false将始终求值为false。这也是为什么编译器未警告您使用=的原因。

10-06 14:06