HeadBlast Skrevet 8. januar 2011 Del Skrevet 8. januar 2011 Hei! Har en obligatorisk øving hvor jeg programmert klassene: Student og OppgaveOversikt. Klassen Student har 2 objektvariabler: String navn, og int antOppg. Og følgende metoder: getNavn(), getAntOppg(), setAntOppg(int antOppg), toString(). Klassen OppgaveOversikt har også 2 objektvariabler:Student[] studenter og int antStud. Og følgende metoder: regNyStudent(String navn), finnAntStud(), finnAntOppgaver(String navn), økAntOppg(String navn, int økning), finnAlleNavn(), toString(). Her er klassene: public class Student { private final String navn; private int antOppg; public Student(String nyNavn) { navn = nyNavn; } public String getNavn() { return navn; } public int getAntOppg() { return antOppg; } public void setAntOppg(int nyantOppg) { if(nyantOppg<0) { throw new IllegalArgumentException("Negativt = ugyldig."); } antOppg += nyantOppg; } public String toString() { return " Navn: " + getNavn() + "\nAntallOppgaver: " + getAntOppg(); } } public class OppgaveOversikt { private Student[] studenter = new Student[5]; private int antStud = 0; public boolean registrerNyStudent(int antOppg, String nyNavn) { if(antStud >0) { for(int i=0; i<antStud; i++) { if(studenter[i].getNavn().equals(nyNavn)) { return false; } } } if(antStud == studenter.length) { utvidTabell(); } studenter[antStud] = new Student(antOppg, nyNavn); antStud++; return true; } public int finnAntallStudenter() { return antStud; } public int finnAntOppgGittStudent(String nyNavn) { int k = 0; for(int i=0; i<antStud; i++) { if(studenter[i].getNavn().equals(nyNavn)) { k += studenter[i].getAntOppg(); } } if(k == 0) { return -1; } return k; } public boolean økAntOppg(String nyNavn, int økning) { for(int i=0; i<studenter.length; i++) { if(studenter[i].getNavn().equals(nyNavn)) { studenter[i].setAntOppg(økning); return true; } } return false; } public String[] finnAlleNavn() { String[] res = new String[studenter.length]; for(int i=0; i<antStud; i++) { res[i] = studenter[i].getNavn() + "\n"; } return res; } public void utvidTabell() { Student[] nyTab = new Student[studenter.length + 5]; for (int i = 0; i < antStud; i++) { nyTab[i] = studenter[i]; } studenter = nyTab; } public String toString() { String[] tabell = finnAlleNavn(); String a = ""; for(int i=0; i<antStud; i++) { a += "Navn: " + tabell[i] + "Antall Oppgaver Løst:" + studenter[i].getAntOppg() + "\n" ; } return "" + a; } } Dette var oppgave 1 på øvingen, som gikk greit. På oppgave 2 står det følgende: "Gjør om løsningen til oppgave 1, slik at ArrayList<Student> brukes i stedet for en tabell av objekter i klassen OppgaveOversikt. " Jeg har ikke noen god kjennskap til klassen ArrayList, men som forstått skal jeg erstatte: private Student[] studenter = new Student[5]; med private ArrayList<Student> studenter = new ArrayList<Student>(); Da lurer jeg på, hvordan kaller jeg da metoder i Student? Blir det noe ala: studenter.get(i).getNavn()? Jeg får feilmelding når jeg prøver å skrive studenter.length, hvordan kan jeg da få lengden av tabellen når jeg bruker ArrayList? Får også feilmelding når jeg prøver på følgende i en for-løkke: studenter.set(i).setAntOppg(økning); Takker for all hjelp til å forstå klassen ArrayList! Mvh HeadBlast Lenke til kommentar
quantum Skrevet 8. januar 2011 Del Skrevet 8. januar 2011 (endret) det blir noe a'la det ja. metoden size() returnerer lengden på lista. evt. kan du iterere slik: for (Student student : studenter) { String navn = student.getNavn(); } som alle andre klasser i java er også ArrayList godt dokumentert: http://download.oracle.com/javase/6/docs/api/java/util/ArrayList.html generelt, når du begynner å bruke et IDE som f.eks. Eclipse, JDeveloper, Netbeans el. får du både dokumentasjon og det hele "at your fingertips". PS. les doc på metoden set(...) også, den brukes til å legge inn et element på en gitt plass i listen. til det du har tenkt å gjøre må du faktisk bruke thelist.get(i).setBlabla(...); du vil jo ha fatt i et objekt å utføre setEtellerannet() på. Endret 8. januar 2011 av quantum Lenke til kommentar
HeadBlast Skrevet 9. januar 2011 Forfatter Del Skrevet 9. januar 2011 Takker for svar! Fikk gjort om klassen til å bruke ArrayList og alt fungerer, flott! 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å