[JAVA] Vector ziet Object niet?

Pagina: 1
Acties:

  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
Hallo,

Ik heb een raar probleem. Ik weet niet of jullie mij kunnen helpen maar heb al heel veel gezocht maar kan geen oplossing vinden.

Ik heb een Client Server applicatie gemaakt voor een project voor school. Daar zit een stukje UserManagement in. Nu wordt er op de server een vector in een usermanager bijgehouden waar alle users inzitten. Deze wordt elke keer weer opnieuw geladen uit een bestand.

Als ik een gebruiker toevoeg via de client(gebeurt via netwerkprotocollen) dan gaat dit goed en laat hij deze zien. Maar als ik dan de nieuw toegevoegde gebruiker wil aanpassen kan dit niet. Dan vindt hij de gebruiker niet vinden. Maar als ik de server herstart dan vindt hij de gebruiker wel en kan hij deze aanpassen en verwijderen.

Maar als ik de gebruikers laat zien dan ziet hij deze dus wel zelfs zonder restart. Dus ze zitten er wel in.

dit is dus wat in de usermanager gebeurt als ik een user wil ophalen.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  
public User getUserbyname(String _username)
    {
        try
        {
            for(User u : users)
            {
               if (_username.equals(u.getUsername()))
               {
                   return u;
               }
               else 
               {
                   return null;
               }
            }
        }

hier returnt ie dus null terwijl hij er wel in de vector users zit. Deze vector zit in de usermanager.

alvast bedankt.
edit: thnx was er eigenlijk net mee bezig :).

[ Voor 1% gewijzigd door CR35 op 12-01-2007 01:17 . Reden: code tag gefixed :Y) ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Tja, kwestie van debuggen, hoewel je het ook al ziet als je goed naar de code kijkt. Kijk eens met de hand hoe de code doorlopen wordt. Hij gaat het try-block in, en vervolgens de for-lus die voor iedere user doorlopen wordt. Voor iedere user kijkt ie of de username gelijk is aan de parameter, en zo niet...

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
Dat doet het ook wel. Maar alleen bij bestaande gebruikers. Ik kan nieuw toegevoegde gebruikers niet veranderen. Dan lijkt het net of hij de gebruiker hier dus niet vindt. Terwijl als ik op een bestaande gebruiker klik(die al in het bestand wat geladen wordt tijdens opstarten zat) ik hem wel kan aanpassen. En het is toch dezelfde object. De nieuwe gebruikers worden wel getoond naast de oude gebruikers maar alleen kan de oude aanpassen. Dus ze zitten er wel in, maar met deze functie vindt hij ze niet. En Misschien dat de vector lengte niet goed wordt doorgegeven of is dit onzin?

De code heb ik er alleen bij gedaan om mijn verhaal wat te verduidelijken.

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 14:52

.oisyn

Moderator Devschuur®

Demotivational Speaker

Nee, je code klopt niet. Hij zal alleen kloppen als de vector 0 of 1 gebruikers bevat. Kijk nou eens goed naar de plek van de return null.

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
Je hebt gelijk!

Dit was eigenlijk een haastklus. Ik ga het direct aanpasen. Ik keek er zo overheen. Ik sta hier met het schaamrood op mijn kaken. Ik heb dit soort lussen zo vaak gebruikt in C# en dergelijke...

In ieder geval heel erg bedankt. Ik post zo of dit de oplossing was.

[ Voor 2% gewijzigd door CR35 op 12-01-2007 01:38 . Reden: opbouw aangepast ]


  • Stainless Steel
  • Registratie: Februari 2002
  • Niet online
Inderdaad .oisyn, de return moet niet in de else, maar na de for loop.

Kijk ook eens naar de Hashtable class, dat zal deze code een stuk sneller maken bij veel users.

Succes

  • CR35
  • Registratie: November 2005
  • Laatst online: 18-11 11:07
bedankt, er stonden ook al returns na de for. En ik heb al wel es gewerkt een hashtable. Maar binnen deze applicatie komen niet heel veel users. Omdat dit eigenlijk een projectje voor school is, wat hierna geen doel meer heeft. En de deadline is niet morgen hoor maar ik vindt het gewoon fijn om 's nachts door te werken.

edit: hij doet het. Ik zat zelf helemaal verkeerd te kijken! nogmaals bedankt.

[ Voor 11% gewijzigd door CR35 op 12-01-2007 01:47 ]

Pagina: 1