Aion
Aion

Reputation: 13

Java Boolean Return Errors

I am new to java (and programming in general) and decided to make a program that checks whether a number is prime or not.

I made a working program:

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

Then I read this, decided to play around with booleans a bit and changed it to this:

import java.io.*;

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))
      {
        public boolean isPrime()
        {
          return (!(number % factor == 0));
        }
        factor++;
      }
        if (isPrime)
        {
          System.out.println(number + " is a prime number.");
        }
        else
        {
          System.out.println(number + " is a composite number (not prime).");
        }
    }
  }
}

I believe I did everything as instructed in the previously linked page I read but my new code is getting these 3 errors:

File: C:\Users\Aion\Documents\DrJava\Other\PrimeCheckerv2.java  [line: 19]
Error: Syntax error, insert "VariableDeclarators" to complete LocalVariableDeclaration
File: C:\Users\Aion\Documents\DrJava\Other\PrimeCheckerv2.java  [line: 19]
Error: Syntax error, insert ";" to complete BlockStatements
File: C:\Users\Aion\Documents\DrJava\Other\PrimeCheckerv2.java  [line: 19]
Error: Syntax error, insert ";" to complete Statement

I have looked through many questions on this site looking for something that might explain them but have found nothing. Can anyone tell me why I am getting these errors?

Upvotes: 1

Views: 233

Answers (1)

Jens
Jens

Reputation: 69495

There are several errors in your code.

First you define a new method inside another. That does not work in java.

   public boolean isPrime()
    {
      return (!(number % factor == 0));
    }
    factor++;
  }

So you have to put it under the rest of the code.

Second: the method must be static because you want to call that method from a static method.

Third: you have to pass parameters to the method:

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

and you have to call it:

if (isPrime(factor, number))

So your class must look like:

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;
    }

}

Upvotes: 3

Related Questions