Gå til innhold

Totalt nybegynnerspørsmål, bruk av klasser o.l.


Anbefalte innlegg

Jeg har denne koden, litt forkortet:

 

class Oppg
{
public static void main(String[]args)
{
ArrayList<Hare> harelist=new ArrayList<Hare>();

	//Scanner-meny her med switch.
	//valg 1: harelist.add(new Hare());

}
}


class Dyr
{
...
}


class Hare extends Dyr
{
Hare()
       {
System.out.println("Antall harer: " + harelist.size());
       }
}

 

Jeg ønsker å skrive ut hvor mange harer som har blitt opprettet fra Hare-klassen. Det gjør jeg med harelist.size(), men den cannot find symbol harelist. Hvordan bør jeg gjøre dette?

Endret av MikkelRev
Lenke til kommentar
Videoannonse
Annonse

Nå er ikke jeg noen Java expert men i C++ ville jeg lagd en "static int harecounter" i Hare klassen som ble telt opp i Hare() og ned i ~Hare() (dvs. decontructoren). Den burde da telle instanser av Hare klassen på et vis og du kan printe ut verdien i constructoren til Hare hvis du har lyst.

 

Sånn jeg tenker meg oppgaven (som du ikke har beskrevet) så er det ulogisk at "Hare" skal kjenne til noe som ligger i "Oppg". Det er mer logisk at du lager metoden Hare::getTotalHares() som returnerer anntallet harer og som du kaller i main() og printer ut resultatet av der.

  • Liker 1
Lenke til kommentar

Takk, en static variabel funket det!

 

Hvordan kan jeg oppdatere en membervariabel til en spesifikk hare i arraylisten harelist basert på en annen membervariabel som er kjent? Kanskje jeg forklarer dårlig/tenker feil, men ser for meg at hadde dette vært database, ville jeg skrevet UPDATE hare SET dato='2010-11-16' WHERE ID='H1';

ID og verdien er altså en kjent membervariabel til hareklassen. Har prøvd å snuse på harelist.indexOf(), men ble ikke helt klok på den.

 

Edit: tror jeg fant det ut, looper gjennom og ser etter verdien for hver runde med en if().

Endret av MikkelRev
Lenke til kommentar

Du kan lagre harene dine i en Map, f.eks. en HashMap, da kan du slå rett opp på riktig hare uten å måtte loope deg fram.

 

Det opprinnelige problemet kunne du løst ved å sende inn hareliste i constructoren til Hare-klassen:

 

i main-metoden

 

harelist.add(new Hare(harelist));

 

og i Hare

 

public Hare(List<Hare> harelist) {

super();

System.out.println(harelist.size());

}

Lenke til kommentar

Problemet med å loope gjennom arraylisten er at jeg må loope gjennom både harelisten og gaupelisten (begge er subclasses av abstract class Dyr) for å søke etter angitt ID. Hvordan jeg looper gjennom begge to uten å få masse redundant er det jeg jobber med nå. Men kan HashMap løse det problemet også? Skal jeg bruke det istedetfor arraylist eller i tillegg? Vil helst ikke gjøre det altfor komplisert, så jeg ikke mister helt oversikt.

Lenke til kommentar

På et litt annet «nivå», så lurer jeg på hvorfor harer skal vite hvor mange andre harer som finnes? Jeg vet ikke hvor mange mennesker det finnes.

 

kanskje fordi de ikke er så monogame for oss? edit: og det bør du jo strengt tatt ha en viss peiling på? 6,5 milliarder and counting ... lærer man ikke sånt på skolen i dag?

Endret av quantum
Lenke til kommentar

Problemet med å loope gjennom arraylisten er at jeg må loope gjennom både harelisten og gaupelisten (begge er subclasses av abstract class Dyr) for å søke etter angitt ID. Hvordan jeg looper gjennom begge to uten å få masse redundant er det jeg jobber med nå. Men kan HashMap løse det problemet også? Skal jeg bruke det istedetfor arraylist eller i tillegg? Vil helst ikke gjøre det altfor komplisert, så jeg ikke mister helt oversikt.

 

Skulle ikke være vanskelig å unngå redundant kode, skriv loop-kode som hanskes med List<Dyr>.

 

HashMap blir mindre komplisert, du får lese dokumentasjonen, eller google litt. Hovedpointet er at du kan gjøre

 

Hare myHare = hareMap.get(id);

 

RTFM, det fins andre praktiske ting som Queue og Set også.

Lenke til kommentar

Takker.

 

"RTFM" er mantraet og svaret på alt! Hele forumet burde egentlig bare vært en link til www.google.com :yes:

 

Denne dokumentasjonen er jo ekstremt tilgjengelig, bare å trykke tab i det ide'et man benytter, og vips er både javadoc og fingerprint oppe på skjermen, totalt meningsløst å lime inn slikt her, forumet er f.eks. glimrende til å løse problemene man evt. måtte ha etter å ha lest docs.

 

Husk at ikke bare er alle de spørsmålene du kan klare å komme opp med allerede besvart tidligere - og dermed umiddelbart tilgjengelig via google - men de er sannsynligvis også besvart mye bedre og grundigere enn det vi klarer her (vi trenger ikke være beskjedne, men verdens beste javaforum er vi nok ikke ... :)

Lenke til kommentar
  • 3 uker senere...

Nytt spørsmål, gidder ikke lage ny tråd for hver minste ting, så tar det likegodt her.

 

 

Hvordan looper jeg gjennom en arraylist av objekter? Har googlet, og kun funnet hvordan du looper gjennom arraylist of Strings eller Integers.

 

Si jeg har ArrayList av products. Hvordan looper jeg gjennom hvert produkt og printer prisen? Har prøvd noe sånt, er jeg helt bak mål?

 

ArrayList<Product> productlist=new ArrayList<Product>();
...
Product product;
for(product : ProductList)
{System.out.println("Price: " + product.getPrice() ); }

Lenke til kommentar

Har prøvd noe sånt, er jeg helt bak mål?

 

ArrayList<Product> productlist=new ArrayList<Product>();
...
Product product;
for(product : ProductList)
{System.out.println("Price: " + product.getPrice() ); }

 

Du er nær. Prøv

 

 

ArrayList<Product> productlist=new ArrayList<Product>();
...
for(Product product : productlist) {
   System.out.println("Price: " + product.getPrice() ); 
}

  • Liker 1
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...