Инициализировать массив с диапазоном от 1 до n в Java
В этом посте мы обсудим, как инициализировать массив диапазоном от 1 до n в Java.
1. Использование IntStream.rangeClosed() метод
В Java 8 вы можете использовать IntStream.rangeClosed(start, end) генерировать последовательность возрастающих значений между start а также end . Чтобы получить примитивный целочисленный массив, вы можете вызвать метод toArray() метод на IntStream , как показано ниже:
import java . util . Arrays ;
import java . util . stream . IntStream ;
public class Main
public static void main ( String [ ] args ) <
int [ ] arr = IntStream . rangeClosed ( 1 , n ) . toArray ( ) ;
System . out . println ( Arrays . toString ( arr ) ) ;
результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Чтобы заполнить существующий массив диапазонами чисел, вы можете использовать лямбда-выражение:
import java . util . Arrays ;
import java . util . stream . IntStream ;
public class Main
public static void main ( String [ ] args ) <
int [ ] arr = new int [ n ] ;
IntStream . rangeClosed ( 1 , n ) . forEach ( i -> arr [ i — 1 ] = i ) ;
System . out . println ( Arrays . toString ( arr ) ) ;
результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
2. Использование IntStream.iterate() метод
Вы также можете использовать IntStream.iterate() метод получения последовательности в порядке возрастания. Он принимает два аргумента — начальное значение и функцию, которая будет применена к предыдущему элементу для создания нового элемента. Чтобы получить числа в диапазоне [1, n] , начальное значение должно быть 1, и функция должна увеличить предыдущее значение на 1. Вы также должны ограничить количество элементов в потоке до n .
import java . util . Arrays ;
import java . util . stream . IntStream ;
public class Main
public static void main ( String [ ] args ) <
int [ ] arr = IntStream . iterate ( 1 , i -> i + 1 ) . limit ( n ) . toArray ( ) ;
System . out . println ( Arrays . toString ( arr ) ) ;
результат:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Java 9 представила перегруженную версию IntStream.iterate() метод, который принимает три аргумента: начальное значение, предикат, определяющий, когда поток должен завершиться, и функцию, которая применяется к предыдущему элементу для создания нового элемента.
Чтобы получить числа в диапазоне [1, n] , начальное значение должно быть 1, предикат должен ограничивать количество элементов до n , и функция должна увеличить предыдущее значение на 1. Его использование показано ниже. Обратите внимание, что нет необходимости вызывать limit() метод больше, так как поток завершается предикатом.
Диапазон чисел
Я только начинаю осваивать данный язык программирование, этой мой первый язык программирования в который я решил полностью изучить., посоветуйте пожалуйста какие лучше книги прочитать по Java, уже есть Герберт Шилдт.
Лучшие ответы ( 1 )
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Random (диапазон случайных чисел)
Добрый день! Не могу разобраться с заданием! Мне надо вернуть X случайных чисел в заданном.
Задан файл целых чисел. Указать диапазон, в котором находятся его элементы
Задан файл целых чисел. Указать диапазон, в котором находятся его элементы. С файлом все понял.
Диапазон чисел — какой диапазон у каждой переменной
все int, можете написать какой диапазон у каждой переменной типа а1= a1 = rand()%7; b1 =.
Регистрация: 19.10.2019
Сообщений: 194
Сообщение от 13ad666 
Основаная проблема, с которой я встретился в самом начале обучения, да и не только я, а много кто, кого я знаю из реальной жизни — это черпать большое к-во информации(разной) с многих источников. Заверши прочтение одной книги(тем-ы), потом ищи новую. Так вместо каши в голове соберется понятная картинка хотя бы.
К заданию твоему — погугли как ввести данные в консоль(там не трудно), запиши их в массив(в обычный или тот же ArrayList, не знаю что ты там выучил уже) при помощи while того же и потом просто for-ом или тем же toString(A.List) выведи на экран для проверки.
Ах да, вторая ошибка, самая главная по сути, которая тормозит тебя во всем — это просто просить на форуме код к заданию и все, там что книга, что тот же полученный код, без повтора самому, тебе не поможет ни на экзамене, ни где -то там еще.
Регистрация: 20.07.2020
Сообщений: 5
StalinStr,
Спасибо, знаю что много информации из разных источников может затормозить, я про книги спросил для своего списка.
Мне не нужен был код, если он был, просил бы объяснить то что бы сам не разобрал.
я думал над этим вариантом, записать в массив, только не знаю как, я постараюсь написать завтра.
2495 / 1944 / 486
Регистрация: 17.02.2014
Сообщений: 9,239
Сообщение от StalinStr 
Основаная проблема,
с чего ты взял, что это проблема?! книги, преподы, курсы и прочие источники — это, как и люди, одних ты понимаешь лучше других хуже, или вообще не понимаешь. скажем, java i/o кажется сплошным, кошмарно большим, нагромождением классов, если не понимать, что там используется всего два паттерна проектирования (об этом, наш любимый Хорсман ни гугу, в своих томах и изданиях).
для эффективного обучения должна быть программа (тема за темой), скажем, как у Эккеля и как можно больше разных (по разному рассказывающих об одном и том же) источников информации и много труда вложенного в практику. берешь Шилда, или Дейтела, как программный учебник, задачи тут, а источники по темам, которые не понял из программного, любые)).
13ad666, к стати, у тебя ответ должен быть от -28 до 23.
Am I evil? Yes, I am!
![]()
![]()
16120 / 9755 / 2731
Регистрация: 21.10.2017
Сообщений: 21,624

Сообщение было отмечено 13ad666 как решение
Решение
Сообщение от Aviz__ 
ответ должен быть от -28 до 23.
Добавлено через 22 минуты
Сообщение от 13ad666 
Подскажите как можно сделать,
Вариантов, в самом деле, масса.
Например —
— получаешь строку от пользователя
— разбиваешь ее на кусочки по запятым (метод String.split() )
— в цикле перебираешь эти кусочки
— если во фрагменте нет дефиса — преобразуешь его в число (метод Integer.parseInt() ) и добавляешь в список
— если дефис есть — разбиваешь фрагмент на две части по дефису (опять split)
— задаешь цикл от первого полученного числа (опять parseInt ) до второго, и каждое значение переменной-итератора также добавляешь в список
— в цикле выводишь результат на посмотреть)))
Вполне себе нормальная задача, где можно познакомиться с некоторыми возможностями.
Алгоритм есть, по синтаксису и примерам указанных методов — го в официальную документацию. Там все очень подробно описано.
Пробуй!
ну если уж совсем не получается.
ну ты хотя бы попробовал САМ?
попробуй еще раз
ну раз ты так настаиваешь.
вот один из вариантов
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
package ru.ismokejc; import java.util.Scanner; import java.util.TreeSet; public class Cyber { public static void main(String[] args) { Scanner scan = new Scanner(System.in); TreeSetInteger> result = new TreeSet<>(); // будущее множество результатов System.out.print("You values: "); String source = scan.next(); // получаем исходную строку String[] items = source.split(","); // получаем массив значений между запятыми for (String item : items) { // перебираем все фрагменты if (item.contains("-")) { // если в фрагменте есть "-". String[] range = item.split("-"); // делим его. // перебираем все значения от первого фрагмента до последнего for (int i = Integer.parseInt(range[0]); i = Integer.parseInt(range[1]); i++) { result.add(i); // и добавляем их } } else { // если это не диапазон, просто добавляем result.add(Integer.parseInt(item)); } } // смотрим результат for(int value: result){ System.out.print(value + " "); } } }
2495 / 1944 / 486
Регистрация: 17.02.2014
Сообщений: 9,239
Сообщение от iSmokeJC 
т.к. я не увидел, что нет запятой((
Сообщение от 13ad666 
другими словами, все верно))
Регистрация: 19.10.2019
Сообщений: 194
Сообщение от Aviz__ 
с чего ты взял, что это проблема?! книги, преподы, курсы и прочие источники — это, как и люди, одних ты понимаешь лучше других хуже, или вообще не понимаешь. скажем, java i/o кажется сплошным, кошмарно большим, нагромождением классов, если не понимать, что там используется всего два паттерна проектирования (об этом, наш любимый Хорсман ни гугу, в своих томах и изданиях).
для эффективного обучения должна быть программа (тема за темой), скажем, как у Эккеля и как можно больше разных (по разному рассказывающих об одном и том же) источников информации и много труда вложенного в практику. берешь Шилда, или Дейтела, как программный учебник, задачи тут, а источники по темам, которые не понял из программного, любые)).
13ad666, к стати, у тебя ответ должен быть от -28 до 23.
Я не спорю, что есть стоящие книги и такие я встречал, где все по сути написано и без воды. А есть где ты кучу инфы получаешь ненужной, не понимаешь толком и идешь искать дальше в новой уже, но с загруженной головой. Хороший пример, могу привести с дискретной математикой. Вот там любят расписать от того как «зарождалась земля и появился космос или как родилась моя собака» до решения той задачи, которая тебе нужна, только пока ты эти 15-25 страниц прочтешь и выловишь суть пройдет время и получишь загруженность бошки.. Некоторым же не важно(вот таким огромный респект), что их книга выйдет в 200 страниц, а не в 500 и пишут сразу по сути. Я это имел ввиду.
На счет что тема за темой должна идти, это ты 10000% прав.
Java диапазон [a:b]
можете сказать если в например в массиве или в каком то другом упражнение говорит выводить те элементы массива, которые принадлежат диапазону [a:b] я вот не понимаю, нужно дать значение a и b, или что-то другое если не сложно можете написать код
Отслеживать
задан 19 июл 2017 в 10:50
Hayk Mkrtchyan Hayk Mkrtchyan
202 3 3 серебряных знака 10 10 бронзовых знаков
перебираете элементы из массива, if’ом проверяете удовлетворяет ли значение данному условию, если да, то выводите его на экран.
19 июл 2017 в 10:53
Ответы предназначены только для ответов. Раз уж вы уже начали что-то обсуждать с @ТатьянаМотря, можете продолжить в чате.
Как в java задать диапазон чисел
Приведенный ниже код задает диапазоны и проверяет в какой диапазон попадает число :
public class App public enum Range RANGE1(Double.MIN_VALUE,1), RANGE2(1, 2), RANGE3(2, 3), RANGE4(3, 4), RANGE5(4, 5), RANGE6(5, 6), RANGE7(6, 7), RANGE8(7, 8), RANGE9(8, 9), RANGE10(9, Double.MAX_VALUE); public double min; public double max; Range(double min, double max) this.min = min; this.max = max; > @Override public String toString() return "Диапазон + " min color: #000000;font-weight: bold">+ min + ", max color: #000000;font-weight: bold">+ max + " >\n"; > public static Range getRange(double x) for(Range range : Range.values()) if(x >= range.min && x range.max) return range; > > return null; > > public static void main(String[ ] args) double x = 4.5; Range range = Range.getRange(x); System.out.println(range.toString()); // => Диапазон > >
23 февраля 2023
Также можно воспользоваться классом ValueRange :
import java.time.temporal.ValueRange; public class App public static void main(String[] args) ValueRange rang = ValueRange.of(0, 10); System.out.println(rang.isValidValue(2)); // => true System.out.println(rang.isValidValue(20)); // => false System.out.println(rang); // => 0 - 10 > >
