/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
En lille opgave - hjælp !
Fra : Profus


Dato : 19-11-03 09:51

Hej I kloge hoveder !

Som I kan se ( når I kaster blik på den nedenstående kode ) er jeg en
begynder i Java verden. Jeg har brug for hjælp til at lave denne fil om -
hurtigt, helst i går, men det har jeg desværre problemer med! Kan I venligst
hjælpe ?
Tekst af opgaven er :

" Når man skriver sætning : medlemmer[0]= new Kartotekskort("","",""); ind
to gange ( se koden ! ) efter hinanden,
vil man få at vide, at der nu er to medlemmer - der burde dog kun være et !
Lav derfor om på koden, så arrayet ligger i klassen Kartotekskort - omdøb
evt. denne klasse til Kartoteket. Brug variablen antal til at styre hvor nye
medlemmer skal placeres. "

....og selve koden er :

public class Kartoteket {

public static void main(String [] args) {

Kartotekskort [] medlem = new Kartotekskort [3];
System.out.println(Kartotekskort.hentAntal());
medlem[0]=new Kartotekskort("","","");
medlem[0]=new Kartotekskort("","","");
System.out.println(Kartotekskort.hentAntal());
System.out.println(medlem[0].hentNavn());
}
}

class Kartotekskort {
private static int antal=0;
private String navn;
private String adresse;
private String telefon;
static int hentAntal() {
return antal;
}
void saetNavn(String indNavn) {
navn=indNavn;
}
String hentNavn() {
return navn;
}
void saetAdresse(String indAdresse) {
adresse=indAdresse;
}
String hentAdresse() {
return adresse;
}
void saetTelefon(String indTelefon) {
telefon=indTelefon;
}
String hentTelefon() {
return telefon;
}
Kartotekskort (String indNavn,String indAdresse,String indTelefon) {

saetNavn(indNavn);
saetAdresse(indAdresse);
saetTelefon(indTelefon);

antal++;
}
}


Det er virkeligt vigtigt for mig - og det burde ikke være svært for Jer -
jeg kan se, at nogle af folk her virkelig har forståelse for Java, so
please...!

På forhånd tak

Jens









 
 
Søren Berg Glasius (19-11-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 19-11-03 10:24

Profus wrote:
> Hej I kloge hoveder !
>
> Som I kan se ( når I kaster blik på den nedenstående kode ) er jeg en
> begynder i Java verden. Jeg har brug for hjælp til at lave denne fil om -
> hurtigt, helst i går, men det har jeg desværre problemer med! Kan I venligst
> hjælpe ?
> Tekst af opgaven er :
>
> " Når man skriver sætning : medlemmer[0]= new Kartotekskort("","",""); ind
> to gange ( se koden ! ) efter hinanden,
> vil man få at vide, at der nu er to medlemmer - der burde dog kun være et !
> Lav derfor om på koden, så arrayet ligger i klassen Kartotekskort - omdøb
> evt. denne klasse til Kartoteket. Brug variablen antal til at styre hvor nye
> medlemmer skal placeres. "

Fejlen er her:

> private static int antal=0;


> Kartotekskort (String indNavn,String indAdresse,String indTelefon) {
>
> saetNavn(indNavn);
> saetAdresse(indAdresse);
> saetTelefon(indTelefon);
>
> antal++;
> }

Hver gang du kalder constructor på Kartotekskort tælles antal en op -
uanset om du sætter den nykonstruerede kartotekskort ind på position 0 i
medlemslisten.

Du kun i stedet lave din medlems liste til en Vector og så bruge

Vector medlemmer = new Vector();

medlemmer.add(new Kartotekskort("","","");

og så fjerne tælleren i Kartotekskort - et kartotekskort behøver ikke
vide, hvor mange andre kartotekskort der er i systemet, det bør i stedet
håndteres af Vectoren med medlemmer.

Vil du så vide, hvor mange kort der er, så spørger du bare vectoren

medlemmer.size();

skal du hente første medlem i medlemmer bruger du

Kartotekskort medlem = (Kartotekskort)medlemmer.get(0);

Fordelen ved ovenstående er også, at når du henter et kartotekskort og
retter i værdien, skal du ikke lægge det tilbage i vektoren, da vektoren
kun holder en reference alle instanser af kartotekskort.

Håber du kan bruge ovenstående, eller spørg løs

Med venlig hilsen

Søren Berg Glaius

Profus (19-11-2003)
Kommentar
Fra : Profus


Dato : 19-11-03 11:14

Tak for et hurtigt svar ! Ja, jeg kan se logiken i det du siger, jeg viste
jo også godt at fejlen var idet at
tælleren var en del af konstruktoren...Din løsning er også helt fin ( jeg
har lige prøvet den ), men den er måske
lidt for avanceret for den niveau, jeg er på nu - så er jeg bange, at min
lærer ville spørge, hvor alt det der med
Vector kommer fra
Som du kan se i opgave teksten, han også efterlyser lidt anderledes løsning.
Kan du komme med nogle forslag i
denne retning ?

Hilsen og tak igen
Jens

"Søren Berg Glasius" <Soeren@Glasius.dk> wrote in message
news:bpfcqm$bf4$1@news.cybercity.dk...

> > Tekst af opgaven er :
> >
> > " Når man skriver sætning : medlemmer[0]= new Kartotekskort("","","");
ind
> > to gange ( se koden ! ) efter hinanden,
> > vil man få at vide, at der nu er to medlemmer - der burde dog kun være
et !
> > Lav derfor om på koden, så arrayet ligger i klassen Kartotekskort -
omdøb
> > evt. denne klasse til Kartoteket. Brug variablen antal til at styre hvor
nye
> > medlemmer skal placeres. "
>
> Fejlen er her:
>
> > private static int antal=0;
>
>
> > Kartotekskort (String indNavn,String indAdresse,String indTelefon) {
> >
> > saetNavn(indNavn);
> > saetAdresse(indAdresse);
> > saetTelefon(indTelefon);
> >
> > antal++;
> > }
>
> Hver gang du kalder constructor på Kartotekskort tælles antal en op -
> uanset om du sætter den nykonstruerede kartotekskort ind på position 0 i
> medlemslisten.
>
> Du kun i stedet lave din medlems liste til en Vector og så bruge
>
> Vector medlemmer = new Vector();
>
> medlemmer.add(new Kartotekskort("","","");
>
> og så fjerne tælleren i Kartotekskort - et kartotekskort behøver ikke
> vide, hvor mange andre kartotekskort der er i systemet, det bør i stedet
> håndteres af Vectoren med medlemmer.
>
> Vil du så vide, hvor mange kort der er, så spørger du bare vectoren
>
> medlemmer.size();
>
> skal du hente første medlem i medlemmer bruger du
>
> Kartotekskort medlem = (Kartotekskort)medlemmer.get(0);
>
> Fordelen ved ovenstående er også, at når du henter et kartotekskort og
> retter i værdien, skal du ikke lægge det tilbage i vektoren, da vektoren
> kun holder en reference alle instanser af kartotekskort.
>
> Håber du kan bruge ovenstående, eller spørg løs
>
> Med venlig hilsen
>
> Søren Berg Glaius



Søren Berg Glasius (19-11-2003)
Kommentar
Fra : Søren Berg Glasius


Dato : 19-11-03 11:45

Profus wrote:

> Din løsning er også helt fin ( jeg har lige prøvet den ), men den er måske
> lidt for avanceret for den niveau, jeg er på nu - så er jeg bange, at min
> lærer ville spørge, hvor alt det der med Vector kommer fra

Det kommer fra din (min) kreativitet og ved at læse lidt i javadoc, samt
din research på internettet/usenet.

> Som du kan se i opgave teksten, han også efterlyser lidt anderledes løsning.
> Kan du komme med nogle forslag i denne retning ?

Du skal nok have noget med en klasse Kartotek, som kan indeholde x antal
Kartotekskort, så du får noget i retningen af

Kartotek kartotek = new Kartotek();

Kartotekskort kartotekskort = new Kartotekskort("","","");

kartotek.tilfoej(kartotekskort);

nu kunne Kartotek se således ud:

class Kartotek {

   int antal = 0;
   Kartotekskort[] kartotek;

   public Kartotek() {}

   public void tilfoej(Kartotekskort kk) {
      if(antal = 0) {
         kartotek = new Kartotekskort[++antal];
      } else {
         Kartotekskort[] nytKartotek = new Kartotekskort[++antal];
         // her skal du lave noget kode, som kan kopiere
         // de nuværende elementer til nytKartotek
         // og tilføje 'kk' som det sidste element i
         // nytKartotek
         
         // her mister kartotek referencen til det
         // oprindelige kartotek, som du lige har
         // kopieret og så kan det garbage collectes
         // (efter min bedste vidende )
         kartotek = nytKartotek;
      }
   }

   public Kartotekskort hent(int position) {
      // Det kan du vist selv kode
   }

   public Kartotekskort slet(int position) {
      // Lidt mere krævende, men den klar du sikkert også
   }
}

Resten er op til _din_ kreativitet. Det er jo trods alt en opgave du
selv skal løse

med venlig hilsen

Søren Berg Glasius


Profus (19-11-2003)
Kommentar
Fra : Profus


Dato : 19-11-03 12:20

Hej igen,

Tusind tak skal du have !
Jeg har desværre ikke tid til at kigge lidt nærmere på det lige nu, men jeg
tvivler
slet ikke på, at det er rigtigt Først i aften får jeg chance til at
læse det nøje og prøve at forstå helt,
hvad du skriver

Mange tak endnu én gang til - i hvert fald får du at vide, hvad min lærer
mener om løsningen

Hilsen J.



"Søren Berg Glasius" <Soeren@Glasius.dk> wrote in message
news:bpfhj1$kt6$1@news.cybercity.dk...
> Profus wrote:
>
> > Din løsning er også helt fin ( jeg har lige prøvet den ), men den er
måske
> > lidt for avanceret for den niveau, jeg er på nu - så er jeg bange, at
min
> > lærer ville spørge, hvor alt det der med Vector kommer fra
>
> Det kommer fra din (min) kreativitet og ved at læse lidt i javadoc, samt
> din research på internettet/usenet.
>
> > Som du kan se i opgave teksten, han også efterlyser lidt anderledes
løsning.
> > Kan du komme med nogle forslag i denne retning ?
>
> Du skal nok have noget med en klasse Kartotek, som kan indeholde x antal
> Kartotekskort, så du får noget i retningen af
>
> Kartotek kartotek = new Kartotek();
>
> Kartotekskort kartotekskort = new Kartotekskort("","","");
>
> kartotek.tilfoej(kartotekskort);
>
> nu kunne Kartotek se således ud:
>
> class Kartotek {
>
> int antal = 0;
> Kartotekskort[] kartotek;
>
> public Kartotek() {}
>
> public void tilfoej(Kartotekskort kk) {
> if(antal = 0) {
> kartotek = new Kartotekskort[++antal];
> } else {
> Kartotekskort[] nytKartotek = new Kartotekskort[++antal];
> // her skal du lave noget kode, som kan kopiere
> // de nuværende elementer til nytKartotek
> // og tilføje 'kk' som det sidste element i
> // nytKartotek
>
> // her mister kartotek referencen til det
> // oprindelige kartotek, som du lige har
> // kopieret og så kan det garbage collectes
> // (efter min bedste vidende )
> kartotek = nytKartotek;
> }
> }
>
> public Kartotekskort hent(int position) {
> // Det kan du vist selv kode
> }
>
> public Kartotekskort slet(int position) {
> // Lidt mere krævende, men den klar du sikkert også
> }
> }
>
> Resten er op til _din_ kreativitet. Det er jo trods alt en opgave du
> selv skal løse
>
> med venlig hilsen
>
> Søren Berg Glasius
>



Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408196
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste