Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 13. diel - ArrayList v Jave

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Odpovedá 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
Odpovedá na Vít Pelc
Libor Šimo (libcosenior):14.12.2016 18:11

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

Editované
Odpovedať
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
Odpovedá 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

Editované
Odpovedať
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vít Pelc
Člen
Avatar
Odpovedá 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
Odpovedá 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.

Odpovedať
Pokud spolu kód a komentář nekorespondují, budou patrně oba chybné
Avatar
Vít Pelc
Člen
Avatar
Odpovedá 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() { }
Editované
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
Odpovedať
Pro člověka, který je plný touhy, není nic nemožné.
Avatar
pocitac770
Tvůrce
Avatar
Odpovedá 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ě
Editované
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
Odpovedať
Pro člověka, který je plný touhy, není nic nemožné.
Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 74.