Avatar billede Tampico Praktikant
13. oktober 2003 - 11:18 Der er 5 kommentarer og
1 løsning

Data ud af en Vector

Hejsa !!!

Jeg er løbet ind i en knast, som jeg har svært ved at knække.
Jeg har en database med nogle badmintonspillere, som bliver hentet og sat ind i en Vector. I Vectoren bliver oprettet en reference til klassen Spiller med navn, køn, niveau og aktiv. Det er herefter meningen at der tilfældigt skal sammensættes to personer, der skal spille mod to andre, og naturligvis under hensyntagen til køn og nivauforskelle.
Men jeg kan kun hente toString-metoden ud fra Vectoren, som er defineret i klassen Spiller??? Jeg har forsøgt uden held at hente fx. getNiveau() i stedet, for dermed at kunne lave nogle betingelser mv. i sammensætningen af spillerne.

Hvad gør jeg forkert siden jeg ikke bare kan udskrive niveauet ud fra Vectorens indexnummer, og uden at få hele toString ud?

Jeg har prøvet meget uden held i min kode herunder, men udgangspunktet er det der står her...


public void sammensaetKronologisk() {

    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      Connection forb = DriverManager.getConnection("jdbc:odbc:db");
      Statement stmt = forb.createStatement();
      ResultSet rss = stmt.executeQuery("select * from spiller where aktiv=1");

      Vector v = new Vector();

      while (rss.next()) {
        Spiller d = new Spiller(rss.getString(1),rss.getString(2),
        rss.getInt(3),rss.getInt(4));
        v.addElement(d);
      }
      while (v.size() !=0) {
        valg = (int) (Math.random()*v.size());
        JOptionPane.showMessageDialog(null, v.elementAt(valg));  //testudskrift
        v.removeElementAt(valg);
      }
    }
    catch (Exception e) {
      JOptionPane.showMessageDialog(null, "FEJL !!!");
    }
  }



Sp. 2
Nu har jeg brugt en Vector i stedet for en ArrayList. Forskellen mellem de to skulle vist være noget med at en Vector er synkron, og en ArrayList ikke er. Men hvad vil det sige at være synkron/usynkron i denne forbindelse???
Avatar billede arne_v Ekspert
13. oktober 2003 - 11:23 #1
re spm 2)

Hvorvidt den er threadsafe (kan bruges i en multithreaded applikation)
Avatar billede arne_v Ekspert
13. oktober 2003 - 11:24 #2
re spm 1)

Prøv med:

((Spiller)v.elementAt(valg)).getNiveau()
Avatar billede napsi Nybegynder
13. oktober 2003 - 11:24 #3
Synkroniseringen sørger for at kun én tråd kan tilgå vektoren ad gangen.

Har du husket at caste dit element til en Spiller, efter du har hevet den ud af vektoren? Alt kommer (endnu) ud som Object og har derfor kun Object's metoder.
Avatar billede magoo20000 Nybegynder
13. oktober 2003 - 11:25 #4
((Spiller)v.elementAt(valg))).getNiveau(); skulle løse det.
Avatar billede magoo20000 Nybegynder
13. oktober 2003 - 11:25 #5
Damn.. Sent igen..
Avatar billede Tampico Praktikant
13. oktober 2003 - 11:36 #6
Det var pokkers....nu virker det selvfølgelig, men synes jeg havde skrevet præcis sådan???
Tak for svaret begge to ;o)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester