Reactie plaatsen 
 
Waardering:
  • 0 stemmen - gemiddelde waardering is 0
  • 1
  • 2
  • 3
  • 4
  • 5
In for(each)loop variabele aanmaken
Auteur Bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #1
In for(each)loop variabele aanmaken
Codevoorbeeldje is denk ik het meest duidelijk.
PHP equivalent van wat ik wil:
PHP-code:
foreach($string as $value)
$
$value =  ""
Het gaat me er dan dus om dat je een variabele maakt, met de naam $value.
Code JAVA :
for (String str : informations)
HashMap str = new HashMap();

Zover kom ik met java, maar er moet denk ik nog iets voor/omheen str, want zo klopt het nog niet..
Iemand de oplossing?:)
(Dit bericht is het laatst bewerkt op 01-08-2009 om 23:54:14 door Anjo.)
01-08-2009 16:02:07
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
gudgip Offline
...
****

Berichten: 578
Lid sinds: 01-2008
Reputatie: 15
Bericht: #2
RE: In for(each)loop variabele aanmaken
Kan je niet beter een HashMap van HashMaps maken dan? met als key de str en als object het object (HashMap in jouw geval) dat je wilt?
Code:
HashMap variables = new HashMap();
for (String str : informations) {
    variables.put(str, new HashMap());
}

Heb dit nog op het internet gevonden:
http://forums.sun.com/thread.jspa?threadID=5339059
http://www.daniweb.com/forums/thread10344.html#
(Dit bericht is het laatst bewerkt op 01-08-2009 om 23:38:42 door gudgip.)
01-08-2009 23:28:11
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #3
RE: In for(each)loop variabele aanmaken
Het wordt even een chaos in mijn hoofd, want ik denk dat het makkelijker moet kunnen.
Dus hierbij even een poging om zo duidelijk mogelijk uit te leggen wat ik wil:
Ik wil informatie opvragen van leden. Laat ik het voor het voorbeeld houden bij dat ik alleen voornaam, tussenvoegsel en achternaam wil weten.
Het aantal leden dat wordt opgevraagd is variabel, maar wel bekend.
De manier waarop ik het doe, is door het inlezen van een bestand dat als volgt is opgebouwd:
Code:
2 // Aantal personen dat wordt doorgegeven
<!--Start person-->
Piet
van
Pietersen
<!--Start person-->
Klaas

Vaak
Uiteindelijk wil ik de leden in een tabel weergeven. Het leek mij hiervoor handig om dan drie arrays te krijgen; voornaam[], tussenvoegsel[] en achternaam[].

En hoe kan ik bovenstaande nou het beste voor elkaar krijgen?

Zo ver ben ik tot nu toe:
Code JAVA :
Integer usercount = new Integer(dis.readLine());
 
String[] informations = { "voornaam", "tussenvoegsel", "achternaam" };
for (String str : informations) {
// What to put here?
for (int i = 0; i < usercount; i++) {
// What to put here?
}
}
Een tweedimensionale array kan dus een prima oplossing zijn, maar het probleem waar ik dan nog wel steeds mee zit is dat ik nog niet weet hoe je de grootte van een array 'variabel' kunt maken.
(Dit bericht is het laatst bewerkt op 02-08-2009 om 01:13:47 door Anjo.)
02-08-2009 00:55:16
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #4
RE: In for(each)loop variabele aanmaken
Wat ik natuurlijk ook nog kan doen, is vooraf de ruimte te reserveren door gewoon in te voeren dat er bijvoorbeeld 1.000 klanten maximaal kunnen zijn. Ik verwacht namelijk niet dat ik ooit daar bovenuit kom.
Maar toch is dat eigenlijk niet de goede manier om dit probleem op te lossen...
02-08-2009 12:15:59
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
mudelta Offline
Senior Member
****

Berichten: 310
Lid sinds: 04-2007
Reputatie: 47
Bericht: #5
RE: In for(each)loop variabele aanmaken
Hoi,

Citaat:Uiteindelijk wil ik de leden in een tabel weergeven.

Dus uiteindelijk wil je de data in je file in je TableModel stoppen.

Code:
public void loadData (TableModel model, BufferedReader reader){
    Integer userCount = new Integer(dis.readLine());
    if(userCount != null){
        String dataIn = null;
        int line = 0;
        int currentPerson = 0;
        while((dataIn=dis.readLine()) != null){
            currentPerson = (int)Math.floor(line/4);
            if(currentPerson+1 > userCount)
                //possible data corruption, handle appropriate
            // als volgende gelijk is aan 0 zitten we met de regel commentaar in de file,
            // die we niet gebruiken
            if(line % 4 > 0)
                model.setValueAt(dataIn, currentPerson, line % 4 - 1);
            line++;
        }
    }
}

(Dit bericht is het laatst bewerkt op 02-08-2009 om 14:16:14 door mudelta.)
02-08-2009 14:14:36
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #6
RE: In for(each)loop variabele aanmaken
Maar jij hebt hierbij ook nog geen oplossing voor het variabel aantal users? Dat is eigenlijk het enige waar ik nog mee zit... Data krijg ik nu gewoon al prima in een tabel.
02-08-2009 14:27:58
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
mudelta Offline
Senior Member
****

Berichten: 310
Lid sinds: 04-2007
Reputatie: 47
Bericht: #7
RE: In for(each)loop variabele aanmaken
wat bedoel je met het variabel aantal users?

of er nu 2 of 50 in het bestand staan, dat maakt toch geen verschil?

02-08-2009 14:59:40
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #8
RE: In for(each)loop variabele aanmaken
mudelta schreef:of er nu 2 of 50 in het bestand staan, dat maakt toch geen verschil?
Als je met een array werkt, wat ik nu dus doe, moet je de grootte van de array vooraf opgeven (het probleem zit hem dus in het feit dat ik het bij java niet voor elkaar krijg om de grootte tijdens het runnen pas in te voeren!!), dan maakt het dus wel degelijk uit.
Net jouw code geprobeerd, maar die geeft de error
Citaat:Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0 >= 0
bij de setValueAt


Maar op welke manier is het mogelijk om de grootte van een array niet al bij het compilen te moeten weten, maar pas tijdens het runnen?
(Dit bericht is het laatst bewerkt op 02-08-2009 om 15:19:49 door Anjo.)
02-08-2009 15:19:10
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
atimmer Offline
Kwaliteit = Apple + Google
*****

Berichten: 1.240
Lid sinds: 05-2008
Reputatie: 32
Bericht: #9
RE: In for(each)loop variabele aanmaken
heb je hier wat aan?

Je kan blijkbaar geen dynamische arrays maken in java maar deze site heeft verschillende oplossingen.

gevonden door op google te zoeken naar 'dynamic array java'

[/:D]
Bloooooooging
02-08-2009 17:28:59
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
mudelta Offline
Senior Member
****

Berichten: 310
Lid sinds: 04-2007
Reputatie: 47
Bericht: #10
RE: In for(each)loop variabele aanmaken
Anjo schreef:Als je met een array werkt, wat ik nu dus doe, moet je de grootte van de array vooraf opgeven

wel , je zou eerst je usercount kunnen inlezen, en dan de arrays met die usercount initialiseren.

Een andere optie is werken met arraylist's en met de methode toArray omvormen naar een array.

Dat mijn code een fout geeft wil zeggen dat achterliggend in het TableModel een array gebruikt wordt, en dit blijkbaar hetzelfde probleem is als wat jij hebt.

02-08-2009 18:30:33
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #11
RE: In for(each)loop variabele aanmaken
mudelta schreef:wel , je zou eerst je usercount kunnen inlezen, en dan de arrays met die usercount initialiseren.
Ik dacht dat die niet werkte, maar blijkbaar toch wel!:)
02-08-2009 18:35:09
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
reijnemans Offline
SCJP Certified
***

Berichten: 174
Lid sinds: 04-2006
Reputatie: 9
Bericht: #12
RE: In for(each)loop variabele aanmaken
Hoi,

Als je een for(each) loop wil maken met een ArrayList of HashMap, dan moet je zorgen dat deze Type save is dat wil zeggen dat er maar 1 Type variabele in kan zitten. (zie http://ep2.nl/topic/1311/ ) Ombouwen naar een Array en dan pas verwerken vind ik best wel nasty.

Voorbeels ArrayList
Code:
List<String> StringList = new ArrayList<String>();
//..... (code die de arrayList vult)
for(String string : StringList) {
     System.out.println(string);
}

voorbeeld ArrayList:
Code:
Map<String, String> map = new HashMap<String, String>();
//..... (code die de map vult)
for(String string : map.values()) {
     System.out.println(string);
}

Dit kan natuurlijk ook met zelf gedefineerde objecten gebruikt worden, wat in jou geval misschien nog beter is:

Code:
public class Person {
     private String naam;
     private String tussenvoegsel;
     private String achternaam;
}

Ik zeg maar zoo, dat is korter als dierentuin
(Dit bericht is het laatst bewerkt op 02-08-2009 om 19:06:49 door reijnemans.)
02-08-2009 19:03:55
Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Anjo Offline
Ep2 Ad-
******

Berichten: 4.948
Lid sinds: 04-2006
Reputatie: 60
Bericht: #13
RE: In for(each)loop variabele aanmaken
Je hebt inderdaad wel een punt. Ik heb het intussen aangepast:)
02-08-2009 23:17:04
De website van deze gebruiker bezoeken Alle berichten van deze gebruiker zoeken Reageren op dit bericht
Reactie plaatsen 


Ga naar locatie:


Contact opnemen | Ep2 | Naar boven | Naar inhoud | Archiefmodus | RSS-syndicatie