&引用;不使用局部变量的值。”; packagecheckprime; 导入java.util.Scanner; 公共类校验素数{ 公共静态void main(字符串[]args){ 布尔值isPrime=true; 扫描仪=新的扫描仪(System.in); System.out.print(“输入一个数字:”); int n=scanner.nextInt(); scanner.close(); for(int i=2;i操作符检查它是否false: 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的值。”。这不会影响我的程序的功能,但我想知道是否有任何方法可以让它消失。如果&引用;不使用局部变量的值。”; packagecheckprime; 导入java.util.Scanner; 公共类校验素数{ 公共静态void main(字符串[]args){ 布尔值isPrime=true; 扫描仪=新的扫描仪(System.in); System.out.print(“输入一个数字:”); int n=scanner.nextInt(); scanner.close(); for(int i=2;i操作符检查它是否false: 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."); } } },java,boolean,Java,Boolean,所以我写了这个程序来检查一个数字是否是素数,它是否工作正常,但是我在声明布尔值“isPrime”的那一行得到了这个错误:“没有使用局部变量isPrime的值。”。这不会影响我的程序的功能,但我想知道是否有任何方法可以让它消失。如果语句错误,您将使用=操作符将false赋值给isPrime,而不是使用=/code>操作符检查它是否false: package checkPrime; import java.util.Scanner; public class CheckPrime {
语句错误,您将使用=
操作符将false
赋值给isPrime
,而不是使用=/code>操作符检查它是否false
:
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
是一个boolean
,只需直接计算它:
if (isPrime == false || n == 1) {
// Here-^
System.out.print(n + " is not prime.");
} else {
System.out.print(n + " is prime.");
}
你在这里犯了一个错误:
if (!isPrime || n == 1) {
// Here^
System.out.print(n + " is not prime.");
} else {
System.out.print(n + " is prime.");
}
应该是:
if (isPrime = false || n == 1) {
出现警告的原因是,如果没有双等号,您将分配给isPrime
,而不是将其与false
进行比较。如果您在这里这样做,那么在整个程序中,您只分配给了isPrime
,但从未使用过它的值
顺便说一句,赋值语句的计算结果是分配给它的值,因此isPrime=false
的计算结果总是false
。这也是为什么编译器没有警告您使用=
使用==
比较值;一个=
是分配。因此如果(isPrime=false | n==1)
是错误的,那么它一定是:如果(isPrime==false | n==1)
,甚至更好的是:如果(!isPrime | n==1)
。额外注意……为了防止这种错误,请始终反向测试:false==isPrime
,因此,如果您不小心使用了单个=
,false=isPrime
会生成一个编译器错误,而isPrime=false
会编译并运行,但不会按需要执行。
if (isPrime == false || n == 1) {
^^
double equals!