简体   繁体   English

为什么我的代码不打印素数

[英]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:您应该像这样更新 onlyPrimes 方法:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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