Я новичок в 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.
3 класса или 3 метода?
@Mureinik У меня мало кода. В MyArray.java у меня есть только код, который я написал ранее, а после этого просто еще один метод public void print (int [] a), где я просто печатаю значения массива. Во втором классе - IsPrime.java у меня есть только это: public boolean checkPrime (MyArray m), и я не знаю, как продолжить ...
@ suvojit_007 3 разных класса: MyArray.java, где я заполняю массив случайными значениями, IsPrime.java, где я должен проверить, является ли число простым или нет, и Run.java, где у меня есть основной метод, и распечатываю сумму простых чисел.
Как array может быть основным?
@TheHeadRush Не массив. Значения (числа) массива, которые генерируются случайным образом.
Мы согласны с тем, что массив не может быть простым. Я не понимаю, почему передают массив методу, который оценивает, является ли число простым.




Вы можете вызвать метод 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
}
}
Пишу с мобильного. Пожалуйста, игнорируйте проблемы с форматированием
В основном это должно выглядеть так:
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;
}
};
Можете ли вы поделиться своим кодом или хотя бы подписями методов? Это сделает вопрос намного яснее и поможет нам помочь вам.