Archief - array list uitprinten java

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

badboyss

Legacy Member
hallo

Nu we een halfjaar verder zijn in het eerste jaar java stuit ik terug op een probleem.
Ik heb een arraylist gevuld met gegevens bevraagd met een scanner methode.
Deze arraylist heb ik opgeropen (schrijf je dit zo?) vanuit een andere classe.
Nu wil ik die list volledig uitprinten maar ikkrijg er geen beweging in ,ik heb al van alles geprobeerd
aar krijg enkel
Code:
Leden.GeBewaren@778a5d49
ipv de leden dus maw roep ik gewoon het object arraylist op ipv wat er in de list zit vermoed ik

Code:
  package Leden;

import java.util.ArrayList;


public class GeBewaren {

     private ArrayList<GeCursisten> mijnlijst;

	public GeBewaren() {
		super();
		mijnlijst = new ArrayList<GeCursisten>();
	}
    
	public void voegToeCursist(GeCursisten tempcursist) {
		mijnlijst.add(tempcursist);
    }
	
	//public void verwijderCursist() {
		//mijnlijst.remove(mijnlijst);
	//}
	
	
	public ArrayList<GeCursisten> getMijnlijst() {
		return mijnlijst;
	}
  }

dan in de andere klasse

Code:
package Leden;

public class GeUitprinten {
	GeBewaren print = new GeBewaren();
	
	public void printuit() {
		 print.getMijnlijst();
		
		System.out.println(print);
}

Dus hier print ik enkel het object uit vermoed ik en niet wat er in de lijst zit.
Voor velen zal dit mss gemakkelijk zijn of zo maar ik heb dus nog nooit een woord geprogrameerd en doe dit nu in avondles dus zo veel les is dit nu ook niet in een half jaar tijd ;-)

hoe kan ik de gegevens die in de arraylist zitten uitprinten?

grts b

VinceVe

Legacy Member
Editeer de GeCursisten klasse en voeg een toString() methode toe.

Code:
public String toString() {
	return this.name;
}

Dan print uit de lijst zo:
Code:
for(String cursist : print.getMijnlijst())
    System.out.println(cursist);

badboyss

Legacy Member
ik heb al een tostring in GeCursisten

Code:
package Leden;

public class GeCursisten {
	
 private String naam;
 private String famnaam;
 private int leeftijd;
 
@Override
public String toString() {
	return "GeCursisten [naam=" + naam + ", famnaam=" + famnaam + ", leeftijd="
			+ leeftijd + "]";
}


public GeCursisten() {
	super();
}

public GeCursisten(String naam, String famnaam, int leeftijd) {
	super();
	this.naam = naam;
	this.famnaam = famnaam;
	this.leeftijd = leeftijd;
}

public String getNaam() {
	return naam;
}

public String getFamnaam() {
	return famnaam;
}

public int getLeeftijd() {
	return leeftijd;
}
 
 
 

}

ultddave

Legacy Member
Code:
public void printuit() 
{
   print.getMijnlijst();
		
   System.out.println(print);
}
Probleem 1: "print.getMijnList()" wordt niet opgevangen, dus is die call compleet nutteloos.
Probleem 2: de variabele print is van het type "GeBewaren" en geen arraylist.

Aanpassen naar:
Code:
public void printuit() 
{
   ArrayList<GeCursisten> lijst = print.getMijnlijst();
		
   for(GeCursisten cursist : lijst)
    System.out.println(cursist);
}

Op voorwaarde dat je dus die toString-methode in GeCursisten nog hebt zoals hierboven ;).

PS: Best de klasse "GeCursisten" hernoemen naar "GeCursist" aangezien de klasse maar 1 cursist voorstelt en geen lijst van cursisten.

PS:
Dit werkt ook als je dit leesbaarder vindt:
Code:
public void printuit() 
{
   ArrayList<GeCursisten> lijst = print.getMijnlijst();
		
   for(int i = 0; i < lijst.size(); ++i)
    System.out.println(lijst.get(i));
}

PS:
In de laatste versie van Java kan je ook gewoon de diamond operator gebruiken zodat:
Code:
   ArrayList<GeCursisten> lijst = print.getMijnlijst();
Zo geschreven kan worden:
Code:
   ArrayList<> lijst = print.getMijnlijst();

Succes. ;)

badboyss

Legacy Member
hallo

bedankt voor de input maar ik denk dat ik waarschijnlijk nog ergens anders een fout heb

Maar ik heb al een classe waar ik mijn arraylist opvang in Gebewaren,en die list roep ik op in een andere classe om die list uit te printen
daarme dat ik vanuit de andere classe
Code:
GeBewaren print = new GeBewaren();
	
	public void printuit() {
		 print.getMijnlijst();

dit is de output

Code:
Wat wenst u te doen

1: maak nieuwe cursist aan
2: verwijder cursist
3: print lijst uit
4: zoek in de lijst
5: beeindig
1
Hoeveel Student(en) wenst u aan te maken?
1
U wenst 1 student aan te maken
Geef de naam van de student
piet
Geef de familienaam van de student
polleke
Geef de leeftijde van de student
25

U gaf volgdende gegevens in : GeCursisten [naam=piet, famnaam=polleke, leeftijd=25]

Wat wenst u te doen

1: maak nieuwe cursist aan
2: verwijder cursist
3: print lijst uit
4: zoek in de lijst
5: beeindig
3
 [COLOR="#FF0000"][U]hier loopt het mis want hier zou volgens optie 3  de array moeten uitprinten en dan de loop opties geven[/U][/COLOR] 
Wat wenst u te doen

1: maak nieuwe cursist aan
2: verwijder cursist
3: print lijst uit
4: zoek in de lijst
5: beeindig

bedankt voor de tip ivb de klasse cursisten,U heeft een punt daarin ,gelukkig bestaat er een refractor :-) aangepast

ultddave

Legacy Member
Code:
print.getMijnlijst();

Ja maar die functie "getMijnLijst" returned een lijst. Maar die vang je nergens op een variabele.

Stel je hebt deze code:

Code:
public void functie1()
{
   int a = 3;
   int b = 4;
   functie2(a, b);
}

public int functie2(int a, int b)
{
   return a + b;
}

De regel "functie2(a, b)" heeft toch geen nut, aangezien je het resultaat (a + b) nergens gaat bijhouden ;).

Dit zou logischer zijn:
Code:
public void functie1()
{
   int a = 3;
   int b = 4;
   int c = functie2(a, b);
}

public int functie2(int a, int b)
{
   return a + b;
}
Dan weet je dat "c" het resultaat bevat en kan je doen met "c" wat je wilt, uitprinten, gebruiken, ... ;).


bedankt voor de input maar ik denk dat ik waarschijnlijk nog ergens anders een fout heb
Probeer dit eens:
Code:
public void printuit() 
{
   ArrayList<GeCursisten> lijst = print.getMijnlijst();
		
   System.out.println("Lijst printen... " + lijst.size() + " cursisten gevonden!");
   for(GeCursisten cursist : lijst)
    System.out.println(cursist);
}
De regel:
Code:
   System.out.println("Lijst printen... " + lijst.size() + " cursisten gevonden!");
Zorgt ervoor dat je kan zien hoeveel cursisten er in je lijst zitten. Als hij zegt "0 cursisten gevonden" terwijl je er toch 1 hebt toegevoegd. Dan weet je dat er ergens een fout zit in je voegToe-functies ;)

Succes ;).

Jerre Muesli

Legacy Member
Studenten zouden eerst moeten leren debuggen. Op veel vragen zouden ze snel zelf een antwoord vinden..

Recipe4hate

Legacy Member
Even uit curieusiteit: werkt < > in Java hetzelfde als bij generics voor C#?

ultddave

Legacy Member
Recipe4hate zei:
Even uit curieusiteit: werkt < > in Java hetzelfde als bij generics voor C#?
Ja ;).

Als je in Java een klasse wilt aanmaken die een bepaald type gebruikt dat de gebruiker zelf mag kiezen (zoals het geval is bij klassen zoals List, Vector, ArrayList, ...)

Dan maak je die zo aan in Java (bijvoorbeeld een klasse Node):

Code:
public class Node<T>
{
    private T m_data;
    ....
}

Voor deze te gebruiken:
Code:
 Node<String>  n1 = new Node<String>();
 Node<Integer> n2 = new Node<Integer>();

Die diamond operator "<>" dient voor dit doel:
Code:
 Node<String>  n1 = new Node<>();
 Node<Integer> n2 = new Node<>();

Dat je het type niet twee keer moet schrijven, 1 keer bij declaratie, 1 keer bij instantiatie. Die operator is toegevoegd in JDK 1.7 als ik me niet vergis.

"The Diamond Operator reduces some of Java's verbosity surrounding generics by having the compiler infer parameter types for constructors of generic classes."

badboyss

Legacy Member
hij geeft idd 0 mee.
dus ik vermoed dat ik ergens een lege lijst maak met het object print en niet de lijst van het object gb opvraag.
@Jerre Muesli dat hebben we idd nog niet gezien.
ik heb het uitgerekend en we hebben nu ong 50u les er opzitten,dus ik weet niet in hoever we zeer rap of traag gaan in de les ;-)

ik heb op mijn dropbox ff mijn klasse gezipt moest iemand mss het zien zitten en het is nie tveel werk om de basis aan te passen dat het werkt kan ik daar verder uit leren.

edit gevonden ik geef het verkeerde object mee met de methode

grts b,

Jerre Muesli

Legacy Member
badboyss zei:
@Jerre Muesli dat hebben we idd nog niet gezien.

Dat ga je wellicht ook niet leren dus probeer het zelf even 5 seconden. Bekijk een tutorial van een minuut en je kan het wellicht al
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan