[Java]methode geeft geen juiste index-uitvoer van ArrayList

Pagina: 1
Acties:
  • 329 views

Acties:
  • 0 Henk 'm!

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
Hallo,

Het doel is om een methode te maken die een int als invoer heeft en als uitvoer het
indexnummer van de ArrayList weergeeft waar de invoer staat.

Voor mezelf had ik even een 'testcode' gemaakt:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
public class Testje
{
   private ArrayList lijst;

    public Testje()
    {
       lijst = new ArrayList();
        
    }
    
    
    public void nieuwGetal()
    {
     
        for(int i = 0; i < 5; i++)
        {
            lijst.add(i);
        }
    }
    
    public int getSize()
    {
        
       return lijst.size();
    }
     
    public int getIndex(int invoer)
    {
        int index = lijst.indexOf(invoer);
        return index; 
        
    }


}


Hetzelfde idee wil ik voor mijn ander code. Hierin heb ik ook een ArrayList gevuld met namen, bankrekeningen en saldi. De bedoeling is nu om een rekeningnummer in te voeren, zodat deze het indexnummer weergeeft.

Wat ik tot nu heb is dit:

Java:
1
2
3
4
5
    public int getIndex(int rekNummer)
    {
        int index = rekLijst.indexOf(rekNummer);
        return index; 
    }


Hier geeft hij dus -1 als uitvoer.

Edit: vergeten te vermelden dat ik in de code tevens methode(s) heb die ervoor zorgen dat de ArrayList wel gevuld wordt.

[ Voor 5% gewijzigd door LeMerchant op 04-01-2010 14:01 ]


Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 22:10

Twazerty

AVCHDCoder developer

gebruik get(int) in plaats van indexOf. IndexOf geeft je volgens mij een int waarde van het Object wat je erin stopt. De int die je erin stopt komt niet voor in je arraylist. Ik lees niet goed 8)7 volgens mij moet je het type nog opgeven.

Volgens mij doe je iets niet goed als je dezelfde methodes zelf erbij gaat maken? Wat is het nu om de waarden door te geven? En waarom geef je het type niet op voor de arraylist? Dus ArrayList<String> bijvoorbeeld. Je mist volgens mij het idee van Objecten en klassen aangezien je int's, strings en doubles in een arraylist stopt.

[ Voor 58% gewijzigd door Twazerty op 04-01-2010 14:05 ]

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:16
Twazerty, dat kan gewoon met autoboxing, het enige wat ik hem in de lijst zie stoppen zijn ints. Neemt niet weg dat generics wel netter zijn, omdat je dan niet handmatig hoeft te casten. :)

@TS: als indexOf() -1 teruggeeft, betekent het dat het element zich niet in de lijst bevindt, wat ook kan inhouden dat je strings met ints probeert te vergelijken wat in principe altijd false oplevert in Java.

Edit: hij heeft zeker zijn codevoorbeeld aangepast. :P

[ Voor 57% gewijzigd door Jaap-Jan op 04-01-2010 14:11 ]

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • LeMerchant
  • Registratie: Februari 2002
  • Laatst online: 22-07-2020

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
Twazerty schreef op maandag 04 januari 2010 @ 14:00:
gebruik get(int) in plaats van indexOf. IndexOf geeft je volgens mij een int waarde van het Object wat je erin stopt. De int die je erin stopt komt niet voor in je arraylist. Ik lees niet goed 8)7 volgens mij moet je het type nog opgeven.

Volgens mij doe je iets niet goed als je dezelfde methodes zelf erbij gaat maken? Wat is het nu om de waarden door te geven? En waarom geef je het type niet op voor de arraylist? Dus ArrayList<String> bijvoorbeeld. Je mist volgens mij het idee van Objecten en klassen aangezien je int's, strings en doubles in een arraylist stopt.
Klopt, ik had inderdaad een type mee kunnen geven aan mijn ArrayList lijst. De ArrayList in de andere code is trouwens van het type BankRekening (hierin staan dus die strings, int's en doubles). Dat zou toch in dit geval niet uit moeten maken...? Mocht er overigens meer code nodig zijn, dan hoor ik dat graag.

Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 22:10

Twazerty

AVCHDCoder developer

Jaap-Jan schreef op maandag 04 januari 2010 @ 14:08:
Twazerty, dat kan gewoon met autoboxing.

@TS: als indexOf() -1 teruggeeft, betekent het dat het element zich niet in de lijst bevindt.
-1 is inderdaad het antwoord wat je terugkrijgt als het element zich niet in de lijst bevind. Ik zie dat je andere topics ook al gesloten zijn die over dit probleem gaat. Volgens mij wil je gewoon een zoekfunctie op een Bankrekening Object. Dat gaat zo niet werken nee.

@jaap, zijn eerste stuk code is totaal niet relevant. En waar het om draait is veel te kort. Hij probeert nu een int met een Bankrekening object te vergelijken. Dan komt het idd niet voor.

[ Voor 15% gewijzigd door Twazerty op 04-01-2010 14:14 ]

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • Jaap-Jan
  • Registratie: Februari 2001
  • Laatst online: 00:16
Ik doe ook maar wat schoten voor de boeg, maar nu ik ook die oudere topics zie, denk ik inderdaad dat 'ie geen flauw idee heeft waar 'ie mee bezig is. :P

| Last.fm | "Mr Bent liked counting. You could trust numbers, except perhaps for pi, but he was working on that in his spare time and it was bound to give in sooner or later." -Terry Pratchett


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 22:28

Matis

Rubber Rocket

LeMerchant schreef op maandag 04 januari 2010 @ 14:09:
Klopt, ik had inderdaad een type mee kunnen geven aan mijn ArrayList lijst. De ArrayList in de andere code is trouwens van het type BankRekening (hierin staan dus die strings, int's en doubles). Dat zou toch in dit geval niet uit moeten maken...? Mocht er overigens meer code nodig zijn, dan hoor ik dat graag.
Je kunt in een ArrayList met BankRekening als content, niet zoeken op rekeningnummer? Je zult een wrapperfucntie oid moeten maken welke je BankRekening uitkleed, zodat het rekeningnummer eruit komt, op waarde kun je dan zoeken.

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • Vaudtje
  • Registratie: April 2002
  • Niet online
Klinkt alsof je hashCode() en equals() niet hebt geimplementeerd op het BankrekeningNummer object?

In deeze zin staan drie fauten


Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 22:10

Twazerty

AVCHDCoder developer

Er zijn meerdere oplossingen mogelijk maar je zult echt een wrapper functie moeten maken zoals Matis al zegt. Maar het heeft niet veel zin om de oplossing te plaatsen zolang de TopicStarter niet in de gaten heeft wat hij fout doet.

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

Verwijderd

Ik snap het probleem niet helemaal, dus ik kan de spijker volledig misslaan, maar is het niet eenvoudiger om een Map implementatie te gebruiken met een key/value als Bankrekeningnummer/Bankrekening?

Zoiets als: HashMap<Integer,Bankrekening> lijst = new HashMap<Integer,Bankrekening>();
en dan iets als :

lijst.get(bankrekeningnummer). Dan krijg je het Bankrekening object terug, waar je dan leuke dingen mee kan gaan doen?

Acties:
  • 0 Henk 'm!

  • Twazerty
  • Registratie: April 2006
  • Laatst online: 22:10

Twazerty

AVCHDCoder developer

Verwijderd schreef op maandag 04 januari 2010 @ 14:21:
Ik snap het probleem niet helemaal, dus ik kan de spijker volledig misslaan, maar is het niet eenvoudiger om een Map implementatie te gebruiken met een key/value als Bankrekeningnummer/Bankrekening?

Zoiets als: HashMap<Integer,Bankrekening> lijst = new HashMap<Integer,Bankrekening>();
en dan iets als :

lijst.get(bankrekeningnummer). Dan krijg je het Bankrekening object terug, waar je dan leuke dingen mee kan gaan doen?
Hij heeft rekeningnummer in het Object Banknummer staan. Dan kan een Map wel maar dat is niet erg nuttig. Bij een wijziging moet je dus 2 gegevens aanpassen. Lijkt mij niet echt de bedoeling :)

Hint: loops en Object BankNummer

Ruisende versterker: schakel je subwoofer in.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 22:41

Creepy

Tactical Espionage Splatterer

Wat nog steeds belangrijk is, is wat je in je rekLijst variable stopt bij de code die niet werk. Weer laat je deze informatie achterwege. Als je daar een BankRekening instopt dan zul je nooit een geldig antwoord krijgen met indexOf(Integer hier>) simpelweg omdat er geen Integers maar BankRekeningen inzitten. Java gaat echt niet zomaar het rekeningnummer van een BankRekening checken, dat zul je zelf moeten doen. Maar alweer blijft het aan onze kant gissen omdat je simpelweg te weinig informatie geeft en wat basiskennis van Java lijkt te missen. Het is nu wel genoeg geweest zo.

[ Voor 14% gewijzigd door Creepy op 04-01-2010 15:17 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.