2017-12-02 115 views
1
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的值未被使用「。它不影響我的程序的功能,但我想知道是否有任何方法可以讓它消失。「本地變量的值未使用。」

+1

通過執行'isPrime = false',您不檢查值,您將其初始化。將其更改爲'isPrime == false'或'!isPrime' – Squiddie

+0

使用'=='比較值;一個'='是**賦值**。所以'if(isPrime = false || n == 1)'是錯誤的,它必須是:'if(isPrime == false || n == 1)',甚至更好的是:'if(!isPrime || n == 1)'。 – Jesper

回答

0

if說法是錯誤的 - 你正在使用的=運營商分配falseisPrime,而不是檢查,如果它是false==操作:

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

你在這裏犯了一個錯誤:

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

它應該是:發生

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

的警告,因爲沒有雙等號,你需要將其與false比較分配給isPrime代替。如果你這樣做,那麼在整個程序中,你只分配到isPrime,但從未使用過它的值。

順便說一下,賦值語句的賦值是賦值給它的,所以isPrime = false總是會計算爲false。這也是編譯器沒有警告你使用=的原因。

+0

要特別注意...爲了避免這種錯誤,請始終反向測試:'false == isPrime',這樣如果您不小心使用了一個'=','false = isPrime'會生成編譯器錯誤,而'isPrime = false'編譯並運行,但不能按需要執行。 –