Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java布尔返回错误_Java_Boolean - Fatal编程技术网

Java布尔返回错误

Java布尔返回错误,java,boolean,Java,Boolean,我对java(以及一般的编程)还不熟悉,所以决定编写一个程序来检查一个数字是否为素数 我制定了一个工作计划: import java.io.*; public class PrimeChecker { public static void main (String[] args) throws IOException { BufferedReader Reader = new BufferedReader (new InputStreamReader (System.in));

我对java(以及一般的编程)还不熟悉,所以决定编写一个程序来检查一个数字是否为素数

我制定了一个工作计划:

import java.io.*;

public class PrimeChecker
{
  public static void main (String[] args) throws IOException
  {
    BufferedReader Reader = new BufferedReader (new InputStreamReader (System.in));

    int factor = 2;
    boolean check = true;
    System.out.println("Please input a number.");
    int number = Integer.parseInt(Reader.readLine ());

    if (number == 1)
    {
      System.out.println(number + " is neither prime nor composite.");
    }
    else
    {
      while (factor <= Math.sqrt(number))
      {
        if (number % factor == 0)
        {
          check = false;
          break;
        }
        factor++;
      }
        if (check)
        {
          System.out.println(number + " is a prime number.");
        }
        else
        {
          System.out.println(number + " is a composite number (not prime).");
        }
    }
  }
}

我浏览了这个网站上的许多问题,寻找一些可以解释这些问题的东西,但什么也没找到。有人能告诉我为什么会出现这些错误吗?

您的代码中有几个错误

首先,在另一个方法中定义一个新方法。这在java中不起作用

   public boolean isPrime()
    {
      return (!(number % factor == 0));
    }
    factor++;
  }
所以你必须把它放在代码的其余部分

第二:该方法必须是静态的,因为您希望从静态方法调用该方法

第三:必须将参数传递给方法:

public static boolean isPrime(int number, int factor) {
    return number % factor != 0;
}
你必须称之为:

if (isPrime(factor, number))
因此,您的类必须看起来像:

public class PrimeCheckerv2 {
    public static void main(String[] args) throws IOException {
        BufferedReader Reader = new BufferedReader(new InputStreamReader(
                System.in));

        int factor = 2;
        System.out.println("Please input a number.");
        int number = Integer.parseInt(Reader.readLine());

        if (number == 1) {
            System.out.println(number + " is neither prime nor composite.");
        } else {
            while (factor <= Math.sqrt(number)) {
                factor++;
                if (isPrime(factor, number)) {
                    System.out.println(number + " is a prime number.");
                } else {
                    System.out.println(number
                            + " is a composite number (not prime).");
                }

            }
        }

    }

    public static boolean isPrime(int number, int factor) {
        return number % factor != 0;
    }

}
公共类PrimeCheckerv2{
公共静态void main(字符串[]args)引发IOException{
BufferedReader Reader=新的BufferedReader(新的InputStreamReader(
系统(in),;
整数因子=2;
System.out.println(“请输入一个数字”);
int number=Integer.parseInt(Reader.readLine());
如果(数字==1){
System.out.println(number+“既不是素数也不是复合数”);
}否则{

while(factor)你看过第19行了吗?@Zavior它也可能是之前的一行……你在一个方法中声明一个方法,你不能这样做。你在while循环中有
public boolean isPrime()
,在
main
中修复了提到的错误。仍然有错误你仍然在声明
isPrime()
main
方法中的
method。Gaaah,你比我强。注意:factor++不是函数的一部分。我修改了我的代码,现在它与你编写的代码完全一样,但我仍然有3个错误。它现在想让我在isPrime、int number和int factor之后的第32行中加上分号。另外,是否要求我在后面加上布尔值r函数,或者我可以将其放在声明变量的位置之前吗?当
number
为素数时,此代码将为每个测试因子打印“\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
if (isPrime(factor, number))
public class PrimeCheckerv2 {
    public static void main(String[] args) throws IOException {
        BufferedReader Reader = new BufferedReader(new InputStreamReader(
                System.in));

        int factor = 2;
        System.out.println("Please input a number.");
        int number = Integer.parseInt(Reader.readLine());

        if (number == 1) {
            System.out.println(number + " is neither prime nor composite.");
        } else {
            while (factor <= Math.sqrt(number)) {
                factor++;
                if (isPrime(factor, number)) {
                    System.out.println(number + " is a prime number.");
                } else {
                    System.out.println(number
                            + " is a composite number (not prime).");
                }

            }
        }

    }

    public static boolean isPrime(int number, int factor) {
        return number % factor != 0;
    }

}