Cemi Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 (endret) Hei! Mulig dette er relativt lett, men jeg kan ikke finne ut hvordan det gjøres. Jeg laster inn en mp3 fil vha. JFileChooser, og ønsker å lage en spilleliste. Jeg har laget en klasse jeg kaller mp3, og tenkte jeg kunne lage et nytt objekt av denne klassen for hver gang. mp3 klassen er kun String filnavn; og String Path; med getter og setters. Jeg tenkte jeg kunne deklarere int n for deretter hver gang filen lastes å kjøre ArrayList<mp3> al=new ArrayList<mp3>(); mp3 n = new mp3(); n.setFilnavn(file.getName()); n.setPath(file.getPath()); n++; al.add(n); Men navnet på objektet blir da ikke 1, 2, 3, 4 osv men kun n. Hvordan kan jeg gi klassen et nytt navn hver gang denne biten kjøres? Jeg har forsåvidt ingen idè om denne koden vil fungere, men ønsker kun å vite hvordan man kan lage objekter med forskjellige navn automatisk? Endret 1. februar 2010 av Cemi Lenke til kommentar
ratata Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 (endret) Denne koden vil ikkje fungera. Du kan ikkje inkrementera n, då dette ikkje er ein int. Litt usikker på kva du eigentleg vil med denne koden, men dersom du vil gje objekta eit namn, kan du laga eit id-felt elns i den aktuelle klassen, for så å samanlikna på id når du skal ha tak i objektet. edit: Du kan forøvrig ha n som ein global int-variabel, men ser fortsatt ikkje heilt kvifor Endret 1. februar 2010 av ratata Lenke til kommentar
Cemi Skrevet 1. februar 2010 Forfatter Del Skrevet 1. februar 2010 (endret) Edit for å prøve på en mer direkte forklaring: Jeg vil gi instansen av mp3 jeg lager navnet til verdien n, og deretter inkrementere n slik at neste gang får den verdien som er n(original)+1. For ekempel om jeg ville hatt notasjonen "sanger"+n i en string ville jeg fått sanger1, deretter sanger2. Jeg vil at hver gang den koden kjøres genereres en instans av klassen med et nytt navn. *Edit slutt* Jeg skal lage en spilleliste til en mp3 spiller, og synes det virker fornuftig å lagre dette i en ArrayList. Dersom du har lest teksten så skrev jeg at jeg hadde tidligere definert int n; Jeg vil at den skal lage et objekt av klassen mp3 med path og filnavn til den aktuelle filen, og lagre denne i arrayen, for så å kunne skrive denne til en fil og skifte frem og tilbake mellom sanger Men den vil ikke bruke n som en int, men definerer det som et navn n istedefor verdien av n. Dersom det gir noe mening? Jeg ønsker at koden skal når jeg åpner første sang definere al[0] = mp3(0) - Altså den lagrer instansen av mp3 som jeg lagersom skal hete 0. Deretter n++ inkrementerer så den neste blir hetende 1. al[1] = mp3(1) al[2] = mp3(2) Sikkert feil notasjon, men håper å få frem poenget Endret 1. februar 2010 av Cemi Lenke til kommentar
quantum Skrevet 1. februar 2010 Del Skrevet 1. februar 2010 (endret) ...Dersom du har lest teksten så skrev jeg at jeg hadde tidligere definert int n; Jeg vil at den skal lage et objekt av klassen mp3 med path og filnavn til den aktuelle filen, og lagre denne i arrayen, for så å kunne skrive denne til en fil og skifte frem og tilbake mellom sanger Men den vil ikke bruke n som en int, men definerer det som et navn n istedefor verdien av n. Dersom det gir noe mening? Jeg ønsker at koden skal når jeg åpner første sang definere al[0] = mp3(0) - Altså den lagrer instansen av mp3 som jeg lagersom skal hete 0. Deretter n++ inkrementerer så den neste blir hetende 1. al[1] = mp3(1) al[2] = mp3(2) Sikkert feil notasjon, men håper å få frem poenget n er i koden du har postet en referanse til en mp3, og kan derfor ikke inkrementeres med ++. Hvis du har deklarert en int n et annet sted i koden er denne nå «overskygget» av mp3 n'en. Hvis alle variablene dine skal hete det samme må du regne med sånne problemer :o) Hvis du bare fjerner "n++;" fra den første kodesnutten du postet, vil alt fungere fint (ser det ut som). En ArrayList holder styr på indexen av seg selv når du bruker .add-metoden. Når du skal hente ut kan du gjøre noe sånt som for (mp3 mp3 : al) { System.err.println("sang: " + mp3.getName()); } // eller slik (legg på null-sjekk for real life app) for (int i = 0; i < al.size(); i++) { System.err.println("sang: " + al.get(i).getName()); } Husk også at en ArrayList ikke er en Array, og at du bør følge navnekonvensjoner, dvs. bruk fornuftige variabelnavn, ikke al og n, og klassenavn begynner med stor forbokstav, altså klassen skal hete Mp3, og referansen kan hete mp3, eller noe annet. Du kan lese litt mer her: http://leepoint.net/notes-java/data/collec.../arraylist.html Endret 1. februar 2010 av quantum Lenke til kommentar
Cemi Skrevet 1. februar 2010 Forfatter Del Skrevet 1. februar 2010 Tusen takk, det funket visst når jeg fjernet n++ ja Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå