Wybieranie liczb z tablicy dla konkretnego przedziału

0

Cześć,
Próbuje napisać metodę która będzie losować liczby z tablicy dla określonego przedziału, chciałbym to zrobić za pomocą stream i nie mam pojęcia jak zacząć z góry dzięki za podpowiedzi.

            public void printNumbersOfRange(int[] numbers, int minValue, int maxValue) {

                IntStream numbersss = Arrays.stream(numbers)
                       
            }```
0

@Vorbizzz:

 public void printNumbersOfRange(int[] numbers, int minValue, int maxValue) {

                List<Integer> numberList = IntStream.range(minValue, maxValue )
                        .boxed()
                        .collect(Collectors.toList());

                System.out.println(numberList);
            }```

tylko tyle napisałem a reszty nie będę pokazywał xD nie wiem jak się dostać do tej tablicy i z jakiego interface skorzystać ;/
1

W ogóle to tutaj trzeba ustalić o co ci chodzi. Ty teraz tworzysz sobie stream intów z przedziału. No wygląda całkiem bezsensownie.
W poleceniu napisałeś że masz losować liczby z tablicy dla określonego przedziału. Losowanie 1 liczby z tablicy jest proste. Losowanie liczb już nie bo trzeba ustalić ile tych liczb a ty tego nie napisałeś. Doprecyzuj to.
'Z przedziału' czyli po tym jak wylosuję liczbę z tablicy to sprawdzam czy jest w przedziale i jeśli tak to losuję kolejną (no bo napisałeś że losowanie liczb a nie liczb) czy może ten przedział oznacza indeksy tablicy, w sensie, że losuję jakieś liczby z podtablicy numbers[minValue...maxValue]?
Co gdy nie znajdę żadnej liczby?

0

@szweszwe:
Już precyzuje, mam taką tablice i chcę z niej wylosować liczby z przedziału np. od 20 do 50. Powinno mi wyrzucić 23,29 i 37.

int[] primeNumbers = {2, 79, 83, 41, 43, 47, 53, 59, 13, 17, 83, 31,
                37, 61, 67, 89, 3, 5, 7, 7, 11, 71, 73, 97, 19, 19, 23, 29};

Wiem że za pomocą tego co dodałem wcześniej losuje mi liczby z konkretnego przedziału który określam a nie z tej tablicy- ale wszystkie próby które robiłem za pomocą IntStream.range to trgedia i nie chcę tego pokazywać :) a nie mam pomysłu z czego mógłbym korzystać żeby to zrobić.

4

Nie wiem dlaczego używasz słowa 'wylosować' skoro chcesz po prostu znaleźć wszystkie liczby z konkretnego przedziału które są w tablicy. Gdzie tutaj jest element losowości? Na razie to jedynie w twoim kodzie :P

Takie coś powinno działać:

List<Integer> integers = Arrays.stream(numbers)
    .filter(x -> x >= minValue && x <= maxValue)
    .boxed()
    .collect(Collectors.toList());

A nawet możesz w Javie >= 16:

List<Integer> integers = Arrays.stream(numbers)
    .filter(x -> x >= minValue && x <= maxValue)
    .boxed()
    .toList();
1

@szweszwe: Dzięki za pomoc i śmieszny pocisk sam się uśmiałem ;)
i jest mi trochę wstyd, że tego nie ogarnąłem

1 użytkowników online, w tym zalogowanych: 0, gości: 1