Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

Есть задача. Как на яве расширить массив и дописать туда число? На питоне супер легко пишешь массив.append(значение). Как также реализовать на java?


задача

Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 10 элементов будут:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.

Mobsman

Пользователь

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Mobsman

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Создать новый массив. Массивы в ява не динамические

Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

Mobsman сказал(а):


Создать новый массив. Массивы в ява не динамические


Нажмите, чтобы раскрыть...


Я понимаю, получается создать новый массив +1 и вставить туда старый? Разве это не костыль?Нет более адекватного решения?

Вебмакака

Пользователь

Регистрация: 07.10.2020

Сообщения: 898

Рейтинг: 560

Вебмакака

Регистрация: 07.10.2020

Сообщения: 898

Рейтинг: 560

Jeivi сказал(а):


Нет более адекватного решения?


Нажмите, чтобы раскрыть...


Использовать список (ArrayList) вместо массива.

killIO

Пользователь

Регистрация: 03.07.2015

Сообщения: 609

Рейтинг: 428

killIO

Регистрация: 03.07.2015

Сообщения: 609

Рейтинг: 428

img

Массивы имеют фиксированный размер
Для твоих целей тебе нужен ArrayList

Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

killIO сказал(а):


Массивы имеют фиксированный размер
Для твоих целей тебе нужен ArrayList


Нажмите, чтобы раскрыть...


Ок, спасибо.Сейчас попробую

Mobsman

Пользователь

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Mobsman

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Jeivi сказал(а):


Я понимаю, получается создать новый массив +1 и вставить туда старый? Разве это не костыль?Нет более адекватного решения?


Нажмите, чтобы раскрыть...


ну есть коллекции (расширяемые массивы типа)

COCK

Пользователь

Регистрация: 21.03.2021

Сообщения: 28579

Рейтинг: 36989

Нарушения: 110

COCK

Регистрация: 21.03.2021

Сообщения: 28579

Рейтинг: 36989

Нарушения: 110

Jeivi сказал(а):


Есть задача. Как на яве расширить массив и дописать туда число? На питоне супер легко пишешь массив.append(значение). Как также реализовать на java?


задача

Каждый следующий элемент ряда Фибоначчи получается при сложении двух предыдущих. Начиная с 1 и 2, первые 10 элементов будут:

1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...

Найдите сумму всех четных элементов ряда Фибоначчи, которые не превышают четыре миллиона.


Нажмите, чтобы раскрыть...


Как ты учишь java, если ты не можешь самостоятельно ознакомиться хотя бы с самыми основами?

Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

cock сказал(а):


Как ты учишь java, если ты не можешь самостоятельно ознакомиться хотя бы с самыми основами?


Нажмите, чтобы раскрыть...


я с питона прилетел, там все по человечески

ttutiki

Пользователь

Регистрация: 28.09.2013

Сообщения: 1898

Рейтинг: 645

ttutiki

Регистрация: 28.09.2013

Сообщения: 1898

Рейтинг: 645

Похоже на анекдот

Mobsman

Пользователь

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Mobsman

Регистрация: 06.09.2016

Сообщения: 24035

Рейтинг: 22350

Jeivi сказал(а):


я с питона прилетел, там все по человечески


Нажмите, чтобы раскрыть...


по человечески

Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

Mobsman сказал(а):


по человечески PepeRofl.png


Нажмите, чтобы раскрыть...


Ну по крайне мере для меня пока выглядит так( С иномарки на автомате пересесть на жигуль с ручной коробкой)

Armagedonby_ZERGS

Пользователь

Регистрация: 23.03.2015

Сообщения: 11361

Рейтинг: 4428

Armagedonby_ZERGS

Регистрация: 23.03.2015

Сообщения: 11361

Рейтинг: 4428

Jeivi сказал(а):


Ну по крайне мере для меня пока выглядит так( С иномарки на автомате пересесть на жигуль с ручной коробкой)


Нажмите, чтобы раскрыть...


Ты просто питон на 25к+ строк не видел, и не сравнивал с жавой у которой все по полочкам.
После жавы питоновское 10 * 'a' = aaaaaaaaaa - выглядит как шутка над здравым смыслом.

А по теме - тебе уже ответили, изучи хотя бы бегло Collection framework.

Xccelerator

Пользователь

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

Xccelerator

Регистрация: 01.01.2018

Сообщения: 1099

Рейтинг: 3041

img

Jeivi сказал(а):


Ну по крайне мере для меня пока выглядит так( С иномарки на автомате пересесть на жигуль с ручной коробкой)


Нажмите, чтобы раскрыть...


что же ты скажешь когда на С попробуешь прогать

HiThere

Пользователь

Регистрация: 24.06.2016

Сообщения: 3476

Рейтинг: 2614

HiThere

Регистрация: 24.06.2016

Сообщения: 3476

Рейтинг: 2614

1) В джаве массивы статичны, их нельзя просто взять и расширить, есть структура данных ArrayList, не буду расписывать как он работает, но если вкратце это динамичный массив


2) Тебе в этой задачке не нужно увеличивать массив




Возможно есть ошибки, код писал прямо тут

int findEvenNumbersFib(int n) {

if (n == 0) return 0;

if (n <= 2) return 2;

int[] dp = new int[n + 1];

dp[1] = 1;

int res = 0;

for (int i = 2; i <= n; i++) {


int cur = dp + dp;



if (cur < 4_000_000 && cur % 2 == 0) {



res += cur;



}



dp = cur;


}


return res;


}







Jeivi

Пользователь

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

Jeivi

Регистрация: 30.03.2013

Сообщения: 2377

Рейтинг: 838

img

Armagedonby_ZERGS сказал(а):


Ты просто питон на 25к+ строк не видел, и не сравнивал с жавой у которой все по полочкам.
После жавы питоновское 10 * 'a' = aaaaaaaaaa - выглядит как шутка над здравым смыслом.

А по теме - тебе уже ответили, изучи хотя бы бегло Collection framework.


Нажмите, чтобы раскрыть...


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

Armagedonby_ZERGS

Пользователь

Регистрация: 23.03.2015

Сообщения: 11361

Рейтинг: 4428

Armagedonby_ZERGS

Регистрация: 23.03.2015

Сообщения: 11361

Рейтинг: 4428

Jeivi сказал(а):


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


Нажмите, чтобы раскрыть...


Ну С/С++ это тоже крайность, да.
Но стоит начать со статической типизации. Плюс, всегда будешь понимать как под капотом работают языки с динамической.

SSLPWNZ

Пользователь

Регистрация: 17.01.2019

Сообщения: 220

Рейтинг: 34

Нарушения: 100

SSLPWNZ

Регистрация: 17.01.2019

Сообщения: 220

Рейтинг: 34

Нарушения: 100

Тут стоит упомянуть, что статическая типизация то же не так одназначна, как может показаться изначально





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

- Shtirlitz -

Пользователь

Регистрация: 21.03.2019

Сообщения: 1003

Рейтинг: 269

- Shtirlitz -

Регистрация: 21.03.2019

Сообщения: 1003

Рейтинг: 269

img

Не исключаю, что вы будете смеяться, но в питон добавили аннотацию типов (необязательную):


https://www.python.org/dev/peps/pep-0484/


Кто-нибудь уже пользовался?

HaisTous

Пользователь

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

HaisTous

Регистрация: 27.08.2013

Сообщения: 3145

Рейтинг: 1121

img

- Shtirlitz - сказал(а):


Не исключаю, что вы будете смеяться, но в питон добавили аннотацию типов (необязательную):


https://www.python.org/dev/peps/pep-0484/


Кто-нибудь уже пользовался?


Нажмите, чтобы раскрыть...


Тайп хинтинг - крутая штука. Использую во всех своих проектах. Там ещё в 3.10 улучшили ее.

tDmn///

Пользователь

Регистрация: 31.07.2012

Сообщения: 830

Рейтинг: 138

tDmn///

Регистрация: 31.07.2012

Сообщения: 830

Рейтинг: 138

Немного не в тему вопроса-а зачем тебе вообще массив в этой задаче?)

ArtemX

Пользователь

Регистрация: 16.07.2020

Сообщения: 2825

Рейтинг: 886

ArtemX

Регистрация: 16.07.2020

Сообщения: 2825

Рейтинг: 886

Jeivi сказал(а):


я с питона прилетел, там все по человечески


Нажмите, чтобы раскрыть...


А как в питоне обстоят дела с реализацией инкапсуляции?

Tre_dota

Пользователь

Регистрация: 05.10.2020

Сообщения: 2545

Рейтинг: 246

Нарушения: 110

Tre_dota

Регистрация: 05.10.2020

Сообщения: 2545

Рейтинг: 246

Нарушения: 110

ArtemX сказал(а):


А как в питоне обстоят дела с реализацией инкапсуляции?


Нажмите, чтобы раскрыть...


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

ArtemX

Пользователь

Регистрация: 16.07.2020

Сообщения: 2825

Рейтинг: 886

ArtemX

Регистрация: 16.07.2020

Сообщения: 2825

Рейтинг: 886

Tre_dota сказал(а):


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


Нажмите, чтобы раскрыть...


А можно ли в питоне сделать поле или метод приватным? Т.е. чтобы клиенты-потребители не смогли до него достучаться напрямую?

Tre_dota

Пользователь

Регистрация: 05.10.2020

Сообщения: 2545

Рейтинг: 246

Нарушения: 110

Tre_dota

Регистрация: 05.10.2020

Сообщения: 2545

Рейтинг: 246

Нарушения: 110

ArtemX сказал(а):


А можно ли в питоне сделать поле или метод приватным? Т.е. чтобы клиенты-потребители не смогли до него достучаться напрямую?


Нажмите, чтобы раскрыть...


Да, префикс в виде двойного нижнего подчеркивания.




Вот подробнее: https://www.geeksforgeeks.org/private-methods-in-python/