Gå til innhold

Anbefalte innlegg

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
Videoannonse
Annonse

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 av quantum
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...