NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 12 - 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
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í :)

 
Odpovědět
14.12.2016 17:51
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 14.12.2016 18:12
Odpovědět
14.12.2016 18:11
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;
    }

}
 
Odpovědět
20.12.2016 17:30
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 20.12.2016 18:31
Odpovědět
+1
20.12.2016 18:31
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.

 
Odpovědět
23.12.2016 19:18
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
23.12.2016 19:23
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 23.12.2016 19:25
 
Odpovědět
+1
23.12.2016 19:25
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
15.1.2017 22:07
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 16.1.2017 0:11
 
Odpovědět
16.1.2017 0:10
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
21.1.2017 18:44
Pro člověka, který je plný touhy, není nic nemožné.
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.