素数程序布尔值无法正常工作

时间:2016-03-12 06:30:35

标签: java loops boolean

下面是我正在编写的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");
}

}

4 个答案:

答案 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));
    }
}