Усилитель, кратный четырем - PullRequest
1 голос
/ 30 апреля 2020

Проблема состоит в том, чтобы взять целое число и вернуть массив от 1 до заданного числа, где:

  1. Если число можно разделить равномерно на 4, его необходимо увеличить на 10 (т.е. вернуть 10 умножить на число).
  2. Если число не может быть равномерно разделено на 4, просто верните число.
public static void main(String [] args) {
    int num = 10;

    int[] arr = new int[num];

    for(int i = 1; i < num; i++){
        if((i)%4 == 0)
            arr[i] = (i)*10;
        else
            arr[i] = i;
    }

    for(int i = 0; i < num; i++)
        System.out.println(arr[i]);
}

Я получаю всплывающую ошибку «Неверно» ответ". Куда я иду не так?

Ответы [ 2 ]

1 голос
/ 30 апреля 2020

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

import org.junit.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

import static org.junit.Assert.*;

public class Foo {
    private List<Integer> createList(Integer endValue) {
        return IntStream.rangeClosed(1, endValue)
                .boxed()
                .map(value -> value % 4 == 0 ? value * 10 : value)
                .collect(Collectors.toList());
    }

    @Test
    public void test() {
        List<Integer> intList = createList(10);

        List<Integer> expectedList = Arrays.asList(1, 2, 3, 40, 5, 6, 7, 80, 9, 10);

        assertEquals(expectedList, intList);
    }
}
1 голос
/ 30 апреля 2020

Ошибка в вашем коде заключается в первом for l oop. Вы должны вернуть массив от 1 до n, но, начиная с индекса 1, этого не сделать. Первый индекс будет равен 0 (значение по умолчанию). Итак, начните с индекса 0 и, проверяя условия и вводя значения, используйте i+1.

 public static void main(String [] args) {
    int num = 5;

    int[] arr = new int[num];

    for(int i = 0; i < num; i++){
        if((i+1)%4 == 0)
            arr[i] = (i+1)*10;
        else
            arr[i] = i+1;
    }

    for(int i = 0; i < num; i++)
        System.out.println(arr[i]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...