Jednowymiarowa tablica

0

Dzień dobry. Muszę zadeklarować jednowymiarową tablicę zmiennych typu int o rozmiarze 10 elementów i
wypełnij ją losowymi wartościami 0 lub 1.

int[] tab = new int[10];
Random wrt = new Random();
for (int i = 0; i < tab.length; i++) {
    tab[i] = wrt.nextInt(1) + 0;
    System.out.println(tab[i]);

Napisałem program, ale u mnie zawsze wyświetlają 0.
Czy mogę prosić, żeby ktoś napisał, co jest nie tak.
Dziękuję bardzo

1

tab[i] = wrt.nextInt(1) + 0;
What? Po co to zero? :D

Nie działa, bo:

public int nextInt(int bound)

Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive)

Powinno być:
tab[i] = wrt.nextInt(2);

1

https://docs.oracle.com/javase/8/docs/api/java/util/Random.html#Random--
szczególnie fragment o:

public int nextInt(int bound)
0
        int[] tab = new int[10];
        Random wrt = new Random();
        for (int i = 0; i < tab.length; i++) {
            tab[i] = wrt.nextInt(2);
            System.out.println(tab[i]);
        }
0

Dziękuję bardzo, już zrozumiałem swój błąd.
Przepraszam, czy mógłby mi ktoś wytłumaczyć, jak można za pomocą kodu policzyć ile o i 1 w tablicę ?

0
Michael54 napisał(a):

Dziękuję bardzo, już zrozumiałem swój błąd.
Przepraszam, czy mógłby mi ktoś wytłumaczyć, jak można za pomocą kodu policzyć ile o i 1 w tablicę ?

O ile dobrze rozumiem chcesz policzyć ile 0, i ile 1 znajduje się w tablicy. Możesz napisać prostą funkcję, która policzy ilość wystąpień danej wartości w tablicy intów:

    public static int count(int[] source, int val) {
        int counter = 0;
        for (int i = 0; i < source.length; i++) {
            if (source[i] == val) {
                counter++;
            }
        }

        return counter;
    }

Zatem możesz rozbudować poprzedni kod o wywołania funkcji count:

        int[] tab = new int[10];
        Random wrt = new Random();
        for (int i = 0; i < tab.length; i++) {
            tab[i] = wrt.nextInt(2);
            System.out.println(tab[i]);
        }

        System.out.println("Liczba zer: " + count(tab, 0));
        System.out.println("Liczba jedynek: " + count(tab, 1));
1
jbialy napisał(a):
Michael54 napisał(a):

Dziękuję bardzo, już zrozumiałem swój błąd.
Przepraszam, czy mógłby mi ktoś wytłumaczyć, jak można za pomocą kodu policzyć ile o i 1 w tablicę ?

O ile dobrze rozumiem chcesz policzyć ile 0, i ile 1 znajduje się w tablicy. Możesz napisać prostą funkcję, która policzy ilość wystąpień danej wartości w tablicy intów:

    public static int count(int[] source, int val) {
        int counter = 0;
        for (int i = 0; i < source.length; i++) {
            if (source[i] == val) {
                counter++;
            }
        }

        return counter;
    }

Można prościej :)

    public static int count(int[] source, int val) {
        return (int) Arrays.stream(source).filter(it -> it == val).count();
    }
0
        int zera = 0;
        int jedynki = 0;
        int[] tab = new int[10];
        Random wrt = new Random();
        for (int i = 0; i < tab.length; i++) {
            final int randomValue = wrt.nextInt(2);
            tab[i] = randomValue;

            if (randomValue == 0) {
                zera = zera + 1;
            } else {
                jedynki = jedynki + 1;
            }
            System.out.println(randomValue);
        }

        System.out.println("Liczba zer: " + zera);
        System.out.println("Liczba jedynek: " + jedynki);

0

Można prościej :)

    public static int count(int[] source, int val) {
        return (int) Arrays.stream(source).filter(it -> it == val).count();
    }

Polemizowałbym :)

Krócej? Tak.
Prościej?

  1. Z tablicy source tworzymy Spliterator
  2. Następnie tworzymy IntStream
  3. Filtrujemy stream
  4. Za pomocą funkcji count() zwracamy longa
  5. Zwróconego lona castujemy na inta.
0

Dziękuję, wszystko rozumiem.

1
damianem napisał(a):
jbialy napisał(a):
Michael54 napisał(a):

Dziękuję bardzo, już zrozumiałem swój błąd.
Przepraszam, czy mógłby mi ktoś wytłumaczyć, jak można za pomocą kodu policzyć ile o i 1 w tablicę ?

O ile dobrze rozumiem chcesz policzyć ile 0, i ile 1 znajduje się w tablicy. Możesz napisać prostą funkcję, która policzy ilość wystąpień danej wartości w tablicy intów:

    public static int count(int[] source, int val) {
        int counter = 0;
        for (int i = 0; i < source.length; i++) {
            if (source[i] == val) {
                counter++;
            }
        }

        return counter;
    }

Można prościej :)

    public static int count(int[] source, int val) {
        return (int) Arrays.stream(source).filter(it -> it == val).count();
    }

Biorąc pod uwagę że elementy to tylko 0 i 1 można jeszcze prościej :)

    public static int count1(int[] source) {
        return Arrays.stream(source).sum();
    }

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