Хотите использовать массив, созданный в методе, для дальнейшего использования в другом методе - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть проблема, и название на самом деле прекрасно ее подытоживает.Поэтому я просто покажу вам фрагмент кода.Таким образом, метод generate генерирует массив, который заполнен числами от 1 до 1000, включая оба.Длина массива определяется пользователем.Следующий метод, isPrime, завершит, если это простое число, так что я могу использовать эти числа с истинным условием в другом методе.Метод генерирования работает, но в isPrime я всегда получаю ошибки.Если вы можете придумать лучший способ, дайте мне знать, пожалуйста.

static int[] generate(int n) {
    int[] arr = new int[n+1];
    for(int x = 0; x <= n; x ++) {
        int number = (int) (Math.random()* 999)+1;
        arr[x] = number;
    }
    return arr;
}

static int isPrime(int p, final int q[]) {                           
    boolean itIs = true;
    //final int[] arr;

    for(int r = 0; r <= p; r++) {               // here it somehow states r is deadCode
        for(int j = 2; j < q[r]; j++) {             
            if(q[r]%j == 0) {                       
                itIs = false;                       
            }
        }
        return q[r];
    }

}

1 Ответ

0 голосов
/ 20 ноября 2018

Сначала создайте метод для проверки, что значение простое:

public boolean isPrime(int value) {
    for (int i = 0; i < value / 2; i++) { // value / 2 is enough, doesn't need to check all values
        if (value % i == 0) {
            return false;
        }
    }
    return true;
}

Затем вы проверяете каждое значение массива и помещаете простое значение в новый массив:

public int[] filterArray(int[] array) {
    List<Integer> intList = new ArrayList<>();
    for (int i = 0; i < array.length; i++) {
        if (isPrime(array[i])) {
            intList.add(array[i]);
        }
    }
    Integer[] integerArray = intList.toArray(new Integer[intList.size()]);
    int[] intArray = ArrayUtils.toPrimitive(integerArray);
    return intArray;
}

Тогда вы получите отфильтрованный простой массив.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...