Arraylist doorzoeken naar waarde

Status
Niet open voor verdere reacties.

EdjeCageman

Gebruiker
Lid geworden
24 okt 2011
Berichten
273
Beste mensen,

Ik ben bezig om een arraylist te doorzoeken naar een bepaalde waarde die door een gebruiker is ingevoerd. ik maak gebruik van de methode van ".indexof" ik zou dan -1 moeten terugkrijgen als er geen zelfde waarde is gevonden. Dat doet hij netjes:p beter gezegd hij zegt altijd -1

Code:
public void addKlant(String voornaam, String achternaam, String adres, String huisnummer, String postcode, String woonplaats, String telefoonnummer, String Sofinummer, int eigenrisico, String verzekering,String mail, String fax ) 
	{
		int index = klantenlijst.indexOf(Sofinummer);
		if (index == -1)
				{
					System.out.println("Zit er niet in");
					klantenlijst.add(new Klant(voornaam, achternaam, adres, huisnummer, postcode, woonplaats, telefoonnummer, Sofinummer, eigenrisico, verzekering, mail, fax));
				}
		else 
		{
			System.out.print("Bestaat al");
		}
	}

Graag hoor ik van jullie:) alvast bij voorbaat dank.
 
dat klopt ook. je hebt een array van type "klant" niet een array van type "string" met alleen sofinummers.

Indexof kijkt dus nu of "sofinummer" overeenkomt met "klant[]". dat zal zeer zelden het geval zijn :p
 
yaps wat wampier zei.

Wat je wel kan doen is meteen een nieuwe klant maken. en dan de indexof gebruiken.

dus:

Code:
Klant k = new Klant(voornaam, achternaam, adres, huisnummer, postcode, woonplaats, telefoonnummer, Sofinummer, eigenrisico, verzekering, mail, fax));
int index = klantenlijst.indexOf(k);

zou moeten werken zo
 
Lijkt me niet toch? Aangezien k gedefinieerd wordt als klant, dus dan gaat hij toch een gehele klant teruggeven?
Hij hoeft alleen maar de waarde van Sofinummer te vergelijken met die van een al bestaande klant, en als die al bestaat moet hij de klant dus niet aanmaken.

Dacht alleen dat je met die indexOf de waarde uit die klant kreeg, mijn fout, als ik nu eerst de java lib beter had doorgelezen -.-'
 
Nee hij geeft de index van Klant k terug.
Je zou een eigen compare functie kunnen maken die dat doet maar in principe moet deze manier ook gewoon werken.


edit

nu kijk je dus of er al een klant op de Klant k manier gespecificeerd is. Als dat zo is, wordt de index in de lijst gereturned.
Bestaat die niet, dan returned die -1
 
Laatst bewerkt:
Semi-java:
[js]
gevonden = false
for (klant zoek : klantenlijst)
if (zoek.Sofinummer == Sofinummer)
{
gevonden =true
}[/js]

je kunt dan "gevonden" verder gebruiken. punt-komma's en haakjes toevoegen naar smaak :)
 
Laatst bewerkt:
kom je nu mee, was er gister mee gekomen:p Dacht er gisterenavond aan, vanochtend gelijk uitgevoerd en zie:

Code:
public boolean vergelijkSofinummer(String Sofinummer)
{
		boolean waarde = false;
		for(Klant lijst : klantenlijst)
		{
			String a = lijst.getsofinummer();
			System.out.println(a);
			if(a == Sofinummer)
			{
				waarde = false;
				break;
			}
			else
			{
				waarde = true;
			}
		}
		System.out.println(waarde);
		return waarde;
	}

Maar toch bedankt wampier :)
 
1) Ik schrijf geen java, dus ben ik altijd een beetje terughoudend
2) omdat je in eerste instantie geen reactie gaf, ging ik er vanuit dat je een "duh" moment had en zelf meteen een oplossing had geschreven. Pas toen je vandaag je reactie gaf dacht ik dat je misschien vast zat ;)

Maar zelf de oplossing vinden is altijd beter :)
 
Ik heb nu eerder een "DUH" moment dan gister:p Was gister verder gegaan met andere dingen.

Maar goed, mag slotje op:)
 
Oke deze is leuk, het is me helemaal gelukt, hij zoekt op sofinummer, en als het sofinummer al bestaat zal de klant niet worden toegevoegd.
Hij doet het allemaal netjes:

Code:
	public boolean vergelijkSofinummer(String Sofinummer)
	{
		boolean waarde = false;
		for(Klant lijst : klantenlijst)
		{
			String a = lijst.getsofinummer();
			System.out.println(a);
			if(a == Sofinummer)
			{
				waarde = true;
				break;
			}
			else
			{
				waarde = false;
			}
		}
		System.out.println(waarde);
		return waarde;
	}

Allemaal top.

Nu wil ik diezelfde zoekfunctie nog een keer gebruiken, en dan wil ik bepaalde waarde uitlezen. Uit de arraylist die ik zoek:
Code:
public void zoek(String zoek)
	{
		for(Klant lijst : klantenlijst)
		{
			String a = lijst.getsofinummer();
			System.out.println(zoek);
			System.out.println(a);
			if(a == zoek)
			{
				System.out.println(lijst.getachternaam());
				System.out.println(lijst.getadres());
				break;
			}
			else
			{
				System.out.println("niet gevonden");
			}
		}
		}

nu heb ik simpel een klant aangemaakt waarbij sofinummer een "1" is. En er zitten ook 2 klanten in met beide een sofinummer "000000000" en "0000"

(Sofinummer is sowieso een String al)
Dan roep ik de methode aan en definieer ik de zoek dmv: String zoek = "1";

en ik krijg dit terug:
Code:
1
000000000
niet gevonden
1
0000
niet gevonden
1
1
niet gevonden

Op het laatst vindt hij hem toch? Dus waarom zegt het systeem dat hij niet is gevonden?:confused:
 
De aanroep van de methode:

Code:
private void terugButtonActionPerformed(java.awt.event.ActionEvent evt) 
	{
		String zoek = "1";
		manager.zoek(zoek);
		
	}

En bij de aangemaakte klant ook alleen maar de waarde "1" (voor de zekerheid nog even gecheckt:p)
 
Oke heb hem:

Code:
for(Klant lijst : klantenlijst)
		{
			String a = lijst.getsofinummer();
			//a.trim();
			//zoek.trim();
			System.out.println(zoek);
			System.out.println(a);
			if(a.equals(zoek))
			{
				System.out.println(lijst.getachternaam());
				System.out.println(lijst.getadres());
				break;
			}
			else
			{
				System.out.println("niet gevonden");
			}
		}

Vind het stom dat hij bij de eerste wel werkt, en bij deze niet:S
 
Top tnx:) snap 'm nu hellemaal!:) Drm werkt de == wel met 2 sofinummers te vergelijken maar niet een String en een sofinummer appart:)

Thx
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan