简体   繁体   中英

Why is my code not printing the prime numbers

I am trying to create a program that outputs only prime numbers. Can you guys tell me what's wrong with it? I'm new to coding so excuse my beginner mistakes.

Here's my code so far:

 // Import statement:
 import java.util.ArrayList;

 public class PrimeDirective {

 // Add your methods here:

 public boolean isPrime(int number){

if (number == 2) {
  return true;
}
if (number < 2) {
  return false;
}

for (int i = 2; i < number; i++) {
   if (number % i == 0) {
     return false;
   }
}
 return true;
}
 public int onlyPrimes(int number){

ArrayList<Integer> primes = new ArrayList<Integer>(){

  for (number : numbers) {
    if (isPrime(number)) {
    primes.add(number);
  }
  }
  return primes;
}
}
 public static void main(String[] args) {

PrimeDirective pd = new PrimeDirective();
int[] numbers = {6, 28, 29, 33, 11, 100, 101, 43, 89};
System.out.println(pd.onlyPrimes(numbers));
}  
}

Here's the errors that I get when running the code:

 $javac PrimeDirective.java
  PrimeDirective.java:29: error: illegal start of type
  for (number : numbers) {
  ^
  PrimeDirective.java:29: error: <identifier> expected
  for (number : numbers) {
             ^
  PrimeDirective.java:29: error: ';' expected
  for (number : numbers) {
               ^
  PrimeDirective.java:29: error: illegal start of type
  for (number : numbers) {
                       ^
  PrimeDirective.java:29: error: <identifier> expected
  for (number : numbers) {
                        ^
  PrimeDirective.java:29: error: ';' expected
  for (number : numbers) {
                          ^
    PrimeDirective.java:30: error: illegal start of type
    if(isPrime(number)) {
      ^
    PrimeDirective.java:30: error: <identifier> expected
    if(isPrime(number)) {
                     ^
    PrimeDirective.java:30: error: ';' expected
    if(isPrime(number)) {
                      ^
  PrimeDirective.java:33: error: ';' expected
  }
   ^
PrimeDirective.java:42: error: class, interface, or enum expected
  public static void main(String[] args) {
                ^
   PrimeDirective.java:45: error: class, interface, or enum expected
     int[] numbers = {6, 28, 29, 33, 11, 100, 101, 43, 89};
     ^
   PrimeDirective.java:46: error: class, interface, or enum expected
      System.out.println(pd.onlyPrimes(numbers));
      ^
     PrimeDirective.java:49: error: class, interface, or enum expected
     }  
     ^
     14 errors

And also, if you guys can give me some tips so my code doesen't look so messy.

You should update the onlyPrimes method like this:

public List<Integer> onlyPrimes(int[] numbers) {
    ArrayList<Integer> primes = new ArrayList<Integer>();
    for (int number : numbers) {
        if (isPrime(number)) {
            primes.add(number);
        }
    }
    return primes;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM