Как вернуть только необходимые значения без нулей и нулей в этом вопросе?

Вы пытались создать именованный тип для перечисления?

i.e.

enum SCREEN_TYPE {  SCREEN_MAIN_MENU, SCREEN_LOADING, SCREEN_GAME };
1
задан Nnaji Victor 27 February 2019 в 02:54
поделиться

7 ответов

вы можете сделать это

public static int[] Divisible(int[] array, int target){
    List<Integer> list = new ArrayList<>();
    for (int i = 0; i<array.length; i++){
        if (array[i] % target == 0){
            list.add(array[i]);
        }
    }
    int[] ints = new int[list.size()];
    for (int i = 0; i < ints.length; i++) {
        ints[i] = list.get(i);
    }
    return ints;
}
0
ответ дан X.Bing 27 February 2019 в 02:54
поделиться

Два варианта:

  • вы можете использовать ArrayList для внутреннего использования, поскольку он может динамически расти (вы просто продолжаете добавлять интересующие вас значения, готово). Если вам нужно вернуть массив, вы можете легко сделать это на основе вашего заполненного списка.

  • при работе только с массивами вы можете просто сделать 2 прохода: сначала создайте этот большой массив и заполните его. Тогда посчитайте ненулевые записи! Создайте новый массив с меньшей длиной, а затем вручную скопируйте все ненулевые элементы.

0
ответ дан GhostCat 27 February 2019 в 02:54
поделиться

Я использовал метод, указанный @GhostCat, но он заставил меня полностью изменить код. Это мой новый код

public static Object[] Divisi(int[] array, int target){
    ArrayList<Integer> answer = new ArrayList<>();

    for (int i = 0; i<array.length; i++){
        if (array[i] % target == 0){
            answer.add(array[i]);
        }
    }

    return answer.toArray();
}

Это дало мне желаемый ответ, но как еще я могу сделать это без преобразования в объект

0
ответ дан Nnaji Victor 27 February 2019 в 02:54
поделиться

Самый короткий и самый быстрый способ сделать это - вы можете изменить массив на ArrayList и затем использовать метод .toArray (), чтобы вернуть его в качестве примитивного массива при возврате.

public static Integer[] Divisible(int[] array, int target){ 
    List<Integer> answer = new ArrayList<>();
    for (int i = 0; i<array.length; i++){ 
        if (array[i] % target == 0) {
            answer.add(array[i]); // pushing to list only if the number is divisible
        } 
    } 
    return answer.toArray(new Integer[0]); // converting the list to an array before returning
}

Если вы хотите получить список уникальных номеров, используйте «Set» вместо «List».

Set<Integer> answer = new HashSet<>();
0
ответ дан Abhay Jatin Doshi 27 February 2019 в 02:54
поделиться

Вместо того, чтобы использовать примитив int, я согласился использовать вместо него Integer. Вот мое решение.

public static Integer[] divisible(Integer[] array, int target) {

    int j = 0;
    ArrayList<Integer> list = new ArrayList<Integer>();

    for (int i = 0; i < array.length; i++) {
        if (array[i] % target == 0) {
            j++;
            list.add(array[i]);
        }
    }

    Integer answer[] = new Integer[j];
    answer = list.toArray(answer);

    return answer;
}
0
ответ дан Daniel Chew 27 February 2019 в 02:54
поделиться

Основная идея - заполнить массив ответов снизу, а затем обрезать его до нужного размера.

int j = 0;
for (int i=0; i<array.length; i++) {
   if (array[i] % target == 0){
       answer[j++] = array[i];
   }
}
return Arrays.copyOf(answer, j);

Массивы - это стандартный служебный класс Java.

Если вам не разрешено использовать служебный класс Arrays, тогда последняя строка может быть заменена на:

int[] answer2 = new int[j];
for (int i=0; i<j; i++)
   answer2[i] = answer[i];
return answer2;

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

0
ответ дан another-dave 27 February 2019 в 02:54
поделиться

Вы должны использовать отдельный счетчик для массива результатов и продолжать увеличивать счетчик, если число делится на цель.

Примерно так:

int[] result=new int[array.length];
int resultindex=0; //create a separate counter
for(int i=0;i<array.length;i++)
{
    if(array[i]%target==0)
    {
        result[resultindex]=array[i];
        ++resultindex; //update the counter
    }
}
0
ответ дан Puspam Adak 27 February 2019 в 02:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: