Hledáš dárek, který neskončí v koši? Nyní 90 % extra kreditů ZDARMA s promo kódem PREKVAPENI90. Zjisti více:
NOVINKA: Staň se datovým analytikem od 0 Kč a získej jistotu práce, lepší plat a nové kariérní možnosti. Více informací:

Diskuze – Lekce 13 - ArrayList v Javě

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Nejnovější komentáře jsou na konci poslední stránky.
Avatar
Odpovídá na Vít Pelc
Erik Šťastný:14.12.2016 17:51

Mám návrh co kdyby jsi ten problém rovnou napsal celý popřípadě postnul kód na místo screenshotu, kde toho moc není a říkání, jak to ani tvůj učitel neví :)

Avatar
Odpovídá na Vít Pelc
Libor Šimo (libcosenior):14.12.2016 18:11

Stiahol si si vzorovy kod pod clankom a porovnal s tym svojim?

Editováno
Odpovědět
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
Vít Pelc
Člen
Avatar
Vít Pelc:20.12.2016 17:30

Hlavní třída s metodou main

package arraylist;


import java.util.Scanner;
public class Arraylist {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Losovac l = new Losovac();
        String volba="0";

        while(!(volba.equals("3")))
        {
        System.out.println("Co si přejete provést za akci?: ");
        System.out.println("1. : Losovat číslo ");
        System.out.println("2. : Vypsat čísla ");
        System.out.println("3. : Konec ");
        volba = sc.nextLine();
        System.out.println();
        switch (volba)
            {
            case "1":
                 System.out.printf("Padlo číslo: %s\n ", l.losuj());
                break;
            case "2":
                System.out.printf("Padla čísla: %s\n ", l.vypis());
                break;
            case "3":
                System.out.println("Děkuji za použití programu.");
                break;
            default:
                System.out.println("Špatná volba!");
                break;
            }
        System.out.println();
        }
    }

}

třída Losovač

package arraylist;


import java.util.ArrayList;
import java.util.Random;
import java.util.Collections;

public class Losovac {
    private ArrayList<Integer> cisla;
    private Random random;

    private void Losovac()
    {
     this.random = new Random();
    this.cisla = new ArrayList<Integer>();
    }

    public int losuj()
    {
        int cislo = random.nextInt(99)+1;
        cisla.add(cislo);
        return cislo;
    }

    public String vypis()
    {
        String s = " ";
        Collections.sort(cisla);
        for (int i : cisla)
        {
            s += i + " ";
        }
        return s;
    }

}
Avatar
Odpovídá na Vít Pelc
Petr Štechmüller:20.12.2016 18:31

Ahoj, z jakého důvodu máš ve třídě Losovac privátní konstruktor? To by asi byt nemělo...

edit: ty vůbec nemáš definovány konstruktor

Editováno
Odpovědět
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vít Pelc
Člen
Avatar
Odpovídá na Petr Štechmüller
Vít Pelc:23.12.2016 19:18

Nojo, toho privátního konstruktoru jsem si ani nevšiml. Díky za upozornění. To byla ta zásadní chyba, teď už to jede jako na drátkách :). Chyba z nepozornosti, ještě se mám co učit.

Avatar
Odpovídá na Vít Pelc
Petr Štechmüller:23.12.2016 19:23

Jenže chyba byla někde jinde. Ty jsi měl definovanou metodu takto:

private void Losovac() {}

problém byl v tom, že tohle není konstruktor, ale obyčejná privátní metoda bez návratové hodnoty.

Odpovědět
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vít Pelc
Člen
Avatar
Odpovídá na Petr Štechmüller
Vít Pelc:23.12.2016 19:25

Jo, já vím. Už ani nevím, proč jsem to tam tak pitomě napsal :D. Byl jsem asi myšlenkama někde jinde.
Každopádně už mám konstruktor definovaný správně, a to:

public Losovac() { }
Editováno
Avatar
Mirka Baranová:15.1.2017 22:07
  1. otázka: Je metoda: removeAll(index, počet) - "Vymaže daný počet prvků od zadaného indexu." správně? Mi to funguje jen takto: removeAll(kolekce) - vymaže celou kolekci z listu.
  2. otázka: Jak se používá metoda toArray()? Když si založím ArrayList "rodina" jako list jmen a nechám si vypsat System.out.prin­tln(rodina.to­Array()); výstup je: [Ljava.lang.Ob­ject;@15db9742
Odpovědět
Pro člověka, který je plný touhy, není nic nemožné.
Avatar
pocitac770
Tvůrce
Avatar
Odpovídá na Mirka Baranová
pocitac770:16.1.2017 0:10
  1. Zkoušel jsem něco k tomu dohledat, nic jsem nenašel, vypadá to na chybu ve článku. Možná autor myslel na metodu .subList(), která má stejné parametry, ale vytváří nový list, obsahující právě tyto prvky. .removeAll() opravdu funguje jak popisuješ.
  2. .toArray() vrací pole, a to doslava, to, co se snažíš je vypsání reprezentace pole, a základní Stringová reprezentace je co? Hash. Viz přetěžování metod, .toString apod. Je to to samé, jako bys napsala
ArrayList<Neco> a = nevimCoMamTedSakraVymysletJePozdeVecer();
Neco[] pole = a.toArray();
System.out.pritnln(pole); //špatně
System.out.pritnln(Arrays.toString(pole); //správně
Editováno
Avatar
Mirka Baranová:21.1.2017 18:44

2. Jo, chápu, ale mi šlo o to, že mi nejdou do pole přidat prvky z toho ArrayListu. V tvém příkladu 2. řádek nebo můj příklad:

ArrayList<String> rodina = new ArrayList<String>();
rodina.add("Alena");
rodina.add("Petr");
String[] jmena = rodina.toArray(); // tohle nefunguje
Odpovědět
Pro člověka, který je plný touhy, není nic nemožné.
Nejnovější komentáře jsou na konci poslední stránky.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 74.