Заполняем массив

  • 6
  • Недоступна
Реализуй статический метод main(String[]), который заполняет массив array значениями valueStart и valueEnd. Если длина массива четная, его первую половину нужно заполнить значениями valueStart, а вторую — valueEnd. Если длина массива нечётная, то первую большую часть заполнить значениями valueStart
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (177)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ilya Chepurin
Уровень 2
25 ноября, 18:01
Самый короткий код подходящий условию который придумал:
Arrays.fill(array, 0, (int)Math.ceil(array.length/2.0), valueStart);
Arrays.fill(array, (int)Math.ceil(array.length/2.0), array.length, valueEnd);
Можно еще короче но условию уже не подойдет:
Arrays.fill(array, valueEnd);
Arrays.fill(array, 0, (int)Math.ceil(array.length/2.0), valueStart);
кто знает как написать еще компактнее?
Fanis
Уровень 7
21 ноября, 05:08
public class Solution {

    public static int[] array = new int[20];
    public static int valueStart = 10;
    public static int valueEnd = 13;

    public static void main(String[] args) {
        int x;

        if (array.length%2==0)  x=array.length/2; // если четное х=длина масива / 2
        else x=array.length/2+1;        //иначе х=длина масива / 2 +1, т.к. по условию надо большую часть

        Arrays.fill(array,0,x,valueStart);              //заполняем 1 половину
        Arrays.fill(array,x,array.length,valueEnd);     //заполняем 2 половину

        System.out.println(Arrays.toString(array));
    }
}
Полина
Уровень 9
14 ноября, 17:19
Анна
Уровень 10
10 ноября, 15:28
"При тестировании значения полей класса Solution будут разными, учти это." Это как понимать?
Полина
Уровень 9
14 ноября, 17:17
Значит при тестировании размер массива может быть изменен, не 20, а 30 или любое другое число. Т.е. код написанный под конкретно массив из 20 не подойдет
Tony P
Уровень 11
8 ноября, 15:56
Люди добрые, как указать последнюю ячейку массива в методе Arrays.fill, если "По старой доброй традиции Java, последний элемент не входит в диапазон."?
Анна
Уровень 10
9 ноября, 20:48
когда я указывала в числовом представлении, то методом проб и ошибок получилось что указывать нужно до 20. В любом другом случае мы бы вышли за пределы массива, но именно в этом - нет, 20 это как финишная черта, за нее нельзя. в элемент с индексом 20 мы не заходим. А потом выяснилось, что в этой задаче все нужно без чисел решать. И последнюю ячейку я указывала как длину массива. Т.е. через array.length
AlexanderY
Уровень 5
8 ноября, 10:15
первая задача
public class Solution {

    public static int[] array = new int[20];
    public static int valueStart = 10;
    public static int valueEnd = 13;

    public static void main(String[] args) {
        //напишите тут ваш код
        int arrLength = array.length;

        // для массива с четной длиной arrLengthHalf будет иметь значение середины
        // для массива с нечетной длиной arrLengthHalf будет иметь значение середины+1
        int arrLengthHalf = (int) Math.ceil(array.length / 2.0);

        Arrays.fill(array, 0, arrLengthHalf, valueStart);
        Arrays.fill(array, arrLengthHalf, arrLength, valueEnd);

        System.out.println(Arrays.toString(array));
    }
}
Pavel Samburg
Уровень 9
19 ноября, 22:58
Как ты на втором уровне здесь оказался?
AlexanderY
Уровень 5
22 ноября, 13:37
Сбросил прогресс и начал заново по другому сценарию обучения.
rogueGodname
Уровень 8
5 ноября, 14:38
что могу сказать: который раз делаю себе замечание читать внимательнее условие задач....
Evgen
Уровень 9
27 октября, 21:40
package com.javarush.task.pro.task05.task0516; import java.util.Arrays; /* Заполняем массив */ public class Solution { public static int[] array = new int[3]; public static int valueStart = 10; public static int valueEnd = 13; public static void main(String[] args) { if (array.length % 2 == 0) { Arrays.fill(array, 0, array.length / 2, valueStart); Arrays.fill(array, array.length / 2, array.length, valueEnd); } else Arrays.fill(array, 0, array.length-1, valueStart); Arrays.fill(array, array.length-1,array.length, valueEnd); System.out.println(Arrays.toString(array)); } } Почему не принимает решение?
Paul
Уровень 11
7 ноября, 16:08
Во-первых в этой строчке кода ошибка.👇
Arrays.fill(array, array.length-1,array.length, valueEnd);
Эта запись 👇 возвращает последний элемент массива, а по условию задачи нужно заполнять меньшую половину
array.length-1
Во-вторых не хватает некоторых предварительных действий .
// это как пример. Переменные можно брать любые, но где их дальше использовать - подумай сам
double i = array.length / 2.0;
double j = (int) Math.round(i);
int g = (int) j;
Aperantim Руководитель методическог в КодКласс/Кружки Учи.
23 октября, 14:35
Сперва неверно прочитал условие задачи, думал, что нужно ставить valueEnd в начало массива при нечётной длине. Оказалось, что нет.
package com.company;
import java.util.Arrays;

public class Main {
    public static int[] array = new int[19];
    public static int valueStart = 10;
    public static int valueEnd = 13;

    public static void main(String[] args) {
        if (array.length%2 == 0) {
            Arrays.fill(array, 0, array.length/2, valueStart);
            Arrays.fill(array, array.length/2, array.length, valueEnd);
        } else {
            Arrays.fill(array, 0, array.length/2 + 1, valueStart);
            Arrays.fill(array, array.length/2 + 1, array.length, valueEnd);
        }
        System.out.println(Arrays.toString(array));
    }
}
Westender
Уровень 14
23 октября, 18:57
Аналогично😬
Anonymous #3159761
Уровень 2
15 октября, 16:02
Как думаете, почему не проходит?
if(array.length % 2 == 0){
                Arrays.fill(array,0,array.length/2,valueStart);
                Arrays.fill(array,array.length/2,array.length,valueEnd);
            } else{
                 Arrays.fill(array,0,array.length/2,valueEnd);
                Arrays.fill(array,array.length/2,array.length,valueStart);
            }
dsbenz
Уровень 13
18 октября, 13:05
Потому что у тебя в IF и ELSE блоки команд одинаковые, в ELSE напиши "array.length/2+1" или "(int)(Math.round(array.length/2.0))", так как по условию тебе надо заполнить первую большую часть если длина массива нечётная
Aperantim Руководитель методическог в КодКласс/Кружки Учи.
23 октября, 14:36
Присоединяюсь к комментарию выше. А ещё у тебя стоит valueEnd на первом месте в Else. Перечитай условие задачи. Я тоже так попался, не очень логично, но нужно и в чётном и в нечётном начинать с valueStart, а заканчивать с valueEnd