"不使用局部变量的值。"

时间:2017-12-02 19:01:09

标签: java boolean

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.");

        }

    }

}

所以我编写了这个程序来检查一个数字是否为素数并且它运行良好,但我在布尔值&#34; isPrime&#34;的行上得到了这个错误。声明:&#34;不使用局部变量isPrime的值。&#34;。它并没有影响我的程序的功能,但我想知道是否有任何方法可以让它消失。

2 个答案:

答案 0 :(得分:1)

你在这里弄错了:

CKEDITOR: config.js

应该是:

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

出现警告是因为没有双等号,您将分配给if (isPrime == false || n == 1) { ^^ double equals! ,而不是将其与isPrime进行比较。如果您在此处执行此操作,那么在整个程序中,您只分配给false但从未使用过它的值。

顺便说一下,赋值语句会计算分配给它的值,因此isPrime将始终计算为isPrime = false。这也是编译器没有警告您使用false的原因。

答案 1 :(得分:0)

您的if声明错误 - 您使用false运算符将isPrime分配给=,而不是使用{{false检查它是否为== 1}} operator:

if (isPrime == false || n == 1) {
    // Here-^
    System.out.print(n + " is not prime.");
} else {
    System.out.print(n + " is prime.");
}

或者,由于isPrimeboolean,因此只需直接评估它:

if (!isPrime || n == 1) {
    // Here^
    System.out.print(n + " is not prime.");
} else {
    System.out.print(n + " is prime.");
}