I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
Som di8leva også skriver, så har jeg svært ved at se grunden til at skulle lave sådanne krumspring...
Et variabelnavn er til for at give en logisk etikette for, hvad der er for nogle data, man håndterer ... Hvis man umiddelbart kan udskifte f.eks. variablen "tidspunkt" med ordet "medisterpølse", så vil det jo ikke give nogen mening ... Men samtidig vil programmets kørsel være uændret --- Det eneste, som er sket er, at kodningen er blevet besværret af navne, som ikke hører til...
/Søren Munk Skrøder
PS : Kan du give en forklaring på, hvorfor du ønsker at hente variablenavne ind fra en fil ???
bearhugx: Man kunne lave et Object array. Allokere objecterne efterhånden som man fik brug for dem. Typecasting osv osv og så lægge dem i en Hashtable med det læste ord som key. Men som du selv nævner, jeg ville ikke ane hvorfor man ville gøre det. Og det giver jo også problemer i forhold til variable som int, double mv.
Som nævnt ovenfor kan det ikke lade sig gøre, men du kan lave en HashMap hvor du associerer det indlæste navn med et objekt, det er nok det tætteste på det du ønsker der er muligt. String indlaest = ....; // indlæst fra fil HashMap map = new HashMap(); Object o = new Object(); map.add( indlaest, o ); Object p = map.get( indlaest );
bearhugx: nej,men der står "det er nok det tætteste på det du ønsker der er muligt." Der er heller ikke noget besynderligt ved den workaround, det kan være at det i virkeligheden er det der skal til.
Det er fordi jeg skal lave et meget simpelt adventurespil i noget skoleværk. Et af kravene er at jeg kan indlæse scenarier fra en bagvedliggen text.fil.
Mit problem er at jeg ikke kan finde ud af hvorledes jeg kan forbinde de rum der indlæses fra filen således jeg kan skrive eks. "go west".
Ok ... Men så tror jeg ikke du får brug for at lave dynamiske variable-navne .. Mere at du bør lave en Key-Value-struktur, som foreslået af hsq og carsten
Så lav en klasse der beskriver dit rum. Herunder fx. rum nummer, retninger, kræves der lys her, dør man i dette rum (et stort hul fx) og hvad du ellers kan finde på. For hver rum linie i din fil laver du en instans af klassen og ned i en form for key-value struktur. Voila!
Det bestemmer du jo selv. Men hvis det nu er en komma separeret liste, så er StringTokenizer det der falder mig først for. Men du er nødt til at smide værdierne over variabel for variabel. Eller bruge reflect - sparer en del linier.
Nedenstående kode kan sikkert gøres noget pænere, men det er da een mulighed. Herunder antages at Rum indeholder String attributter. Forbehold for stave- og kompileringsfejl. :-)
Hashtable rum = new Hashtable(); Rum r = null; String rec = null; BufferedReader inp = new BufferedReader(new FileReader("din inputfil")); while ((rec = inp.readLine() != null) { StringTokenizer st = new StringTokenizer(rec,","); r = new Rum(); String rumnr = st.nextToken(); // Fx. eller du kan lave en counter r.setRum1(st.nextToken()); r.setRum2(st.nextToken()); osv... rum.put(rumnr,r); }
Nå ja så laver vi det til et svar :-) Håber det hjalp
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.