Volanie metody z druhej triedy. Metoda s cyklom

Programovacie jazyky, rady, poradňa...
Kkasino
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 232
Registrovaný: 07 júl 2010, 17:36

Volanie metody z druhej triedy. Metoda s cyklom

Príspevok od používateľa Kkasino »

Zdravím. Mám triedu v ktorej je jednoduchá metóda vypis

Kód: Vybrať všetko

import java.io.*;
import java.util.Scanner;


    public class Menu {
    public ZoznamAut zA;
  
   

    public Menu() { }
    
    
    public void vypis(){
    this.zA = new ZoznamAut();
    this.zA.zobrazVsetko();
    }
} 
    
a triedu ZoznamAut

Kód: Vybrať všetko


import java.util.ArrayList;
public class ZoznamAut {

     public ArrayList<String> vsetkyA;
     



    public ZoznamAut() {

        this.vsetkyA =  new ArrayList<String>();    
 
    public void zobrazVsetko() {   
    
        for (String value : this.vsetkyA) {
        System.out.println(value);
    }
    
            System.out.println("vsetko");
   }

   public void vlozAuto(String auto) {
       
       this.vsetkyA.add(auto);
    }







Ak pomocou vlozAuto pridám retaz string tak trieda Zoznam aut v poriadku vypíše všetký pridane auta + vsetko zo System outu.

Avšak ked metodu zavolám v triede Menu tak vypíše len vsetko zo System outu, cyklus uplne ignoruje. Google nepomáha, kde je chyba ?


Dakujem.
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: Volanie metody z druhej treidy. Metoda s cyklom

Príspevok od používateľa mirak2 »

ukaz aj ako vyzera tvoj main. lebo problem bude tam.
Kkasino
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 232
Registrovaný: 07 júl 2010, 17:36

Re: Volanie metody z druhej treidy. Metoda s cyklom

Príspevok od používateľa Kkasino »

V prvej triede je main prazdy v druhej triede ZoznamAut je takýto :

Kód: Vybrať všetko

this.lT =  new ArrayList<String>();
        this.sT =  new ArrayList<String>();
        this.nT =  new ArrayList<String>();
        this.vsetkyA =  new ArrayList<String>();    
mirak2
Hardcore addict
Hardcore addict
Používateľov profilový obrázok
Príspevky: 6719
Registrovaný: 18 sep 2005, 13:44
Bydlisko: Prague, CZE / Kosice, SVK

Re: Volanie metody z druhej treidy. Metoda s cyklom

Príspevok od používateľa mirak2 »

az teraz vidim, ze v metode vypis() v Menu vytvoris novu instanciu objektu a vypises ju. chapes, ze ked ju vytvoris, tak je prazdna? musis si uvedomit, ze pracujes s objektami a ich instanciami.
analogia z realneho zivota: kupis si zosit (vytvoris instanciu ZoznamAut). napises do toho zosita na prvu stranu svoje meno (pridas retazec do ZoznamuAut). a ked zavolas vypis tak v podstate si kupis novy zosit a vypises ho.
Kkasino
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 232
Registrovaný: 07 júl 2010, 17:36

Re: Volanie metody z druhej treidy. Metoda s cyklom

Príspevok od používateľa Kkasino »

Aha, rozumiem. Neuvedomil som si že vytváram vlastne uplne novú prázdnu inštanciu.

Je nejakým spôsobom možné aby trieda Menu prebrala retazec ktorý som pridal do Zoznamu (vsetkyA) v triede ZoznamAut cez funkciu :

Kód: Vybrať všetko

   public void vlozAuto(String auto) {
       
       this.vsetkyA.add(auto);
    }
aacid
Hardcore addict
Hardcore addict
Príspevky: 8135
Registrovaný: 22 nov 2006, 21:55
Bydlisko: BA

Re: Volanie metody z druhej triedy. Metoda s cyklom

Príspevok od používateľa aacid »

na zaciatku triedy Menu si deklarujes premennu zA, ktora bude instanciou triedy ZoznamAut. potom si ju nainicializujes v konstruktore. potom budes mat metodu pridaj auto, ktora zavola add() priamo na tej instancii, teda v tej metode zavolas zA.add(). no a nakoniec budes auta vypisovat a teda tiez zavolas zA.zobrazVsetko() bez toho aby si znova inicializoval zA.

inac by som doporucil pomenovavat premenne trochu inteligentnejsie... lT, sT a nT nikomu nic nepovedia iba tebe. a pokial budes mat trosku rozsiahlejsi program tak o mesiac nepovedia nic uz ani tebe. a pokial mas dobre IDE tak tym neusetris ani vela casu.
Napísať odpoveď