Java - сумма простых чисел сгенерированных случайным образом значений массива

Я новичок в Java, и у меня есть задача - вычислить сумму простых чисел из случайно сгенерированных значений массива.

Итак, мне сказали, что у меня должно быть 3 класса:

1) MyArray - где я уже писал этот код:

...
public int[] createArray(int n) {
    int[] a = new int[n];

    for (int i = 0; i < a.length; i++) {
        a[i] = rnd.nextInt(10);
    }
    return a;
}
...

2) IsPrime - где я должен проверять, является ли число простым или нет. Проблема в том, что я не знаю, как «подключить» массив из MyArray к классу IsPrime. Я начал с логического метода checkPrime, который имеет объект m из класса MyArray в качестве параметра, но я не знаю, как продолжить, как получить доступ к массиву из класса IsPrime.

Я благодарен за любые мнения и советы. Спасибо!

P.S. В моем третьем классе Run.java есть метод main.

Можете ли вы поделиться своим кодом или хотя бы подписями методов? Это сделает вопрос намного яснее и поможет нам помочь вам.

Mureinik 30.10.2018 15:59

3 класса или 3 метода?

suvojit_007 30.10.2018 16:01

@Mureinik У меня мало кода. В MyArray.java у меня есть только код, который я написал ранее, а после этого просто еще один метод public void print (int [] a), где я просто печатаю значения массива. Во втором классе - IsPrime.java у меня есть только это: public boolean checkPrime (MyArray m), и я не знаю, как продолжить ...

Cassara 30.10.2018 16:09

@ suvojit_007 3 разных класса: MyArray.java, где я заполняю массив случайными значениями, IsPrime.java, где я должен проверить, является ли число простым или нет, и Run.java, где у меня есть основной метод, и распечатываю сумму простых чисел.

Cassara 30.10.2018 16:10

Как array может быть основным?

The Head Rush 30.10.2018 16:11

@TheHeadRush Не массив. Значения (числа) массива, которые генерируются случайным образом.

Cassara 30.10.2018 16:12

Мы согласны с тем, что массив не может быть простым. Я не понимаю, почему передают массив методу, который оценивает, является ли число простым.

The Head Rush 30.10.2018 16:20
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
7
455
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете вызвать метод IsPrime из класса запуска, как показано ниже

Class Run {

    public static void main(String[] args]) {

        IsPrime ip=new IsPrime();

        int sum= ip.checkPrime();

        System.out.print(sum);

    }
}


Class IsPrime {    
    public int checkPrime(int length){ MyArray m=
    MyArray ();  int[] arr = m.createArray(5);

    //iterating arr and call to isPrime() method

    }

    public boolean isPrime(int num){ 

        // prime checking logic  
    }  
}

Пишу с мобильного. Пожалуйста, игнорируйте проблемы с форматированием

Deepak Gunasekaran 30.10.2018 16:11
Ответ принят как подходящий

В основном это должно выглядеть так:

MyArray myArray = new MyArray();
IsPrime isPrime = new IsPrime();

int sum = 0;
for(int num : myArray.createArray(20)){
    if (isPrime.checkPrime(num)){
        sum += num;
    }
}

System.out.println(sum);

Поместите его в свой основной метод в классе Run

Вы должны объявить в классе, в котором у вас есть массив. В классе isPrime следует объявить метод, который суммирует все простые числа, полученные в параметре int []. В качестве идеи и для ускорения вы можете использовать ForkJoinPool для создания нескольких потоков, но я думаю, что это не ваша основная цель на данный момент.

    public class YourClass{

        private int[] MyArray;

    //Constructor
    //Methods

    //Getter of MyArray
        public int[] getMyArray(){
            return this.MyArray;
        }
    };

Другие вопросы по теме