[Java] incompatible types - found....

Pagina: 1
Acties:
  • 285 views

Acties:
  • 0 Henk 'm!

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

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
(in mijn vorige topic kon ik helaas niet meer reageren omdat deze al gesloten was, daarom open ik em opnieuw)

In mijn klasse Bank heb ik een ArrayList<BankRekening> aangemaakt. De
bedoeling van de volgende methode is om de index van een opgegeven bankrekening retourneert.

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public int getIndex(int rekNummer)
    {
        int index = 0;
        boolean found = false;
        while(index < rekLijst.size() && !found) {
            String note = rekLijst.get(index);
            if(note.contains(rekNummer)) {
                found = true;
                
                System.out.println(note);
            }
             
            else {
                
                index++;
            }
        }
        
    }


Dit geeft echter de foutmelding: incompatible types - found BankRekening but expected java.lang.String
De types veranderen veranderd niets aan de foutmelding. Tevens diverse fora via google gevonden welke voor niet exact omschrijven wat (in deze situatie) aan de hand is.

ACM stelde voor om het 'BankRekening note = rekLijst.get(index)' te doen. Dit had ik ook al geprobeerd, en daaruit komt de foutmelding: cannot find symbol - method contains(int)

Aanvullende info:

- ArrayList is gedeclareert als: private ArrayList<BankRekening> rekLijst; in de klasse Bank
- Bij deze nog een stukje uit de klasse BankRekening (overige methodes die er nu niet toe doen zijn weggelaten):

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class BankRekening
{
    
    private String naam;
    private int rekNummer;
    private double saldo;

    
    public BankRekening(String naam, int rekNummer, double saldo)
    {
        this.naam = naam;
        this.rekNummer = rekNummer;
        saldo = 0;
        
    }

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Die melding is toch wel héél erg duidelijk? Ergens in je code wordt een string verwacht (ik zie geen regelnummer bij je foutmelding) en geef je in plaats daarvan een BankRekening door. rekLijst bevat als ik het goed begrijp rekeningnummers en geen strings, dus regel 6 gaat fout domweg omdat je een object terug krijgt en geen string. Logisch toch?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 07:50

momania

iPhone 30! Bam!

LeMerchant schreef op zondag 03 januari 2010 @ 15:43:
ACM stelde voor om het 'BankRekening note = rekLijst.get(index)' te doen. Dit had ik ook al geprobeerd, en daaruit komt de foutmelding: cannot find symbol - method contains(int)
Hoe duidelijk wil je het hebben... de melding zegt je gewoon dat BankRekening geen methode contains(int) heeft. Je zal de vergelijking dus anders moeten doen om uit te vinden of je het juiste object uit je lijst te pakken hebt. Bij voorkeur verander je het naar een map, zoals ACM ook al eerder aan gaf, zodat je niet voor ieder rekeningnummer dat je wilt zoeken je hele lijst hoeft door te lopen :Y)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

  • pingwings
  • Registratie: Mei 2009
  • Laatst online: 01-06 00:15
op regel 6 gaat het fout, hier probeer je een Bankrekening object naar een string om te zetten.

Als je in plaats van String note, Bankrekening note doet, zou dit probleem opgelost zijn, maar dan moet je de rest van je functie wel aanpassen zodat het rekening houdt met een Bankrekening object, en geen string.

:edit:

Bij de vergelijking waar je nu vastloopt op contains, doe je gewoon note.rekNummer == rekNummer.

[ Voor 14% gewijzigd door pingwings op 03-01-2010 15:55 ]


Acties:
  • 0 Henk 'm!

  • Styxxy
  • Registratie: Augustus 2009
  • Laatst online: 16:49
Ik zie al enkele foutjes. Ten eerste return je niets in je methode? Vervolgens zie ik toch maar iets vreemds; met name regel 6 van je methode "getIndex". Je zet daar "String note = rekLijst.get(index);". Mij lijkt het dat je deze regel ergens van hebt overgenomen aangezien die niet volledig correct is in deze context. Wat je hier doet is een BankRekening object in een String object proberen te steken. Daar pruttelt hij namelijk op; dit moet dus "BankRekening note = rekLijst.get(index);" zijn.

Daarnaast wil je dus vergelijken. Wat wil je nu vergelijken? Juist, het rekeningnummer. Wat jij hier probeert is de "contains" methode oproepen op het BankRekening object. Aangezien jij die methode niet hebt aangemaakt, zal je compiler braaf pruttelen dat hij dat niet kan vinden. Mij lijkt overigens het makkelijkste (in deze context) het volgende, in je if-statement zet je "if (note.rekNummer == rekNummer)", dan zou dit normaal wel moeten werken.

Acties:
  • 0 Henk 'm!

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

LeMerchant

Da's tochnie normaaaaal!

Topicstarter
NMe schreef op zondag 03 januari 2010 @ 15:49:
Die melding is toch wel héél erg duidelijk? Ergens in je code wordt een string verwacht (ik zie geen regelnummer bij je foutmelding) en geef je in plaats daarvan een BankRekening door. rekLijst bevat als ik het goed begrijp rekeningnummers en geen strings, dus regel 6 gaat fout domweg omdat je een object terug krijgt en geen string. Logisch toch?
Het moet inderdaad regel 6 zijn. Ik had inderdaad beide opties geprobeerd, dus:

String note = rekLijst.get(index); en BankRekening note = rekLijst.get(index);
De ArrayList<BankRekening> bevat een naam (string), nummer (int), saldo (double).

En hoe bedoel je '...omdat je een object terug krijgt en geen string' ? Het gedeelte wat in System.out.println getoond wordt? In dit geval dus het note (type BankRekening)...maar het ging dus ook al met met note (type String)...

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Met andere woorden: het slotje van Creepy op je vorige topic geldt nog steeds. Dit is domweg basiskennis van Java en programmeren in het algemeen. Dat je geen methods van de ene klasse aan kan roepen op de andere mag duidelijk zijn. ;) Lees je nog wat in in de materie, want hier had je ook zonder onze hulp wel uit kunnen komen met wat begrijpend lezen van de foutmelding en wat basiskennis.

Dit topic gaat wederom op slot, te meer omdat je het enige antwoord dat we kunnen geven toch al hebt. Succes in elk geval.
LeMerchant schreef op zondag 03 januari 2010 @ 16:01:
[...]

En hoe bedoel je '...omdat je een object terug krijgt en geen string' ? Het gedeelte wat in System.out.println getoond wordt? In dit geval dus het note (type BankRekening)...maar het ging dus ook al met met note (type String)...
...waar je vervolgens nog steeds een BankRekening in probeert op te slaan. :?
Java:
1
String note = rekLijst.get(index);

Leer eerst eens begrijpen wat je doet voordat je begint met programmeren, dat helpt. ;)

[ Voor 35% gewijzigd door NMe op 03-01-2010 16:04 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1

Dit topic is gesloten.