下面是我正在编写的java编程类的代码。我无法弄清楚为什么它始终打印它是一个素数(真),无论我输入的int。先感谢您。贾里德
import java.util.*;
public class PrimeNumbersExample
{
public static void main(String[] args)
{
int myInt = 0;
Scanner kb = new Scanner(System.in);
System.out.println("Please enter a number: ");
myInt = kb.nextInt();
boolean isPrime = true;
{
for (int i = 2; i < myInt; i++) // exclude 1 and the variable num from the diviso
if (myInt % i == 0)
isPrime = false;
}
if (isPrime=true)
System.out.println("It is a Prime number.");
else if (isPrime=false)
System.out.println("the number is NOT PRIME");
}
}
答案 0 :(得分:0)
您没有正确进行比较。您只需说if(isPrime)
而不是if(isPrime=true)
,因为isPrime
已经是布尔值。
System.out.println(isPrime ? "Prime" : "Non-Prime");
即使您想进行比较,也应使用==
而非=
。
if (isPrime == true) {
System.out.println("It is a Prime number.");
} else {
System.out.println("the number is NOT PRIME");
}
此外,您可以在break
内使用if
声明,以便在数字被识别为非素数后停止。
for (int i = 2; i < myInt; i++) {
if (myInt % i == 0) {
isPrime = false;
break;
}
}
以下是更正后的代码段:
public static void main(String[] args)
{
int myInt = 0;
Scanner kb = new Scanner(System.in);
System.out.println("Please enter a number: ");
myInt = kb.nextInt();
boolean isPrime = true;
for (int i = 2; i < myInt; i++) { // exclude 1 and the variable num from the diviso
if (myInt % i == 0) {
isPrime = false;
break;
}
}
System.out.println(isPrime ? "Prime" : "Non-Prime");
}
答案 1 :(得分:0)
在行中,if(isPrime = true)你要做的是检查isPrime是否为真,但究竟发生了什么,它将值true赋给isPrime并在if条件中求值为true。所以你应该做的是if(isPrime == true)。更正后的代码如下,
import java.util.*;
public class PrimeNumbersExample
{
public static void main(String[] args)
{
int myInt = 0;
Scanner kb = new Scanner(System.in);
System.out.println("Please enter a number: ");
myInt = kb.nextInt();
boolean isPrime = true;
{
for (int i = 2; i < myInt; i++) // exclude 1 and the variable num from the diviso
if (myInt % i == 0)
isPrime = false;
}
if (isPrime==true)
System.out.println("It is a Prime number.");
else if (isPrime==false)
System.out.println("the number is NOT PRIME");
}
}
*注意 - 你也可以直接在if条件中使用isPrime变量,因为它是布尔值
答案 2 :(得分:0)
语句if (isPrime=true)
实际上只是将值true
分配给isPrime
变量,该变量将始终返回true。这就是为什么第一个条件总是被执行
你可以这样做:
if (isPrime) {
System.out.println("It is a Prime number.");
} else {
System.out.println("the number is NOT PRIME");
}
另外,总是把括号放在可读性上
答案 3 :(得分:0)
试试这个。
public class MyPrimeNumCheck {
public boolean isPrimeNumber(int number){
for(int i=2; i<=number/2; i++){
if(number % i == 0){
return false;
}
}
return true;
}
public static void main(String a[]){
MyPrimeNumCheck mpc = new MyPrimeNumCheck();
System.out.println("Is 17 prime number? "+mpc.isPrimeNumber(17));
System.out.println("Is 19 prime number? "+mpc.isPrimeNumber(19));
System.out.println("Is 15 prime number? "+mpc.isPrimeNumber(15));
}
}