Har skrivt följande metod som jag vill skall göra en array större.
// Resize area.
private void resizeArray(Media[] pArray, int pSize) {
// size of the new array.
int oldSize = pArray.length;
// new array.
Media[] tmpArray = new Media[pSize];
int preserveLength = Math.min(oldSize, pSize);
// Copy content to temp array.
if(preserveLength > 0)
System.arraycopy(pArray,0,tmpArray,0,preserveLength);
mArray = tmpArray;
}
mArray kommer från följande:
public class MediaContainer {
private int i = 0;
private Media[] mArray = new Media[1]; // min array som skall ökas under programkörning.
// add an object to an array.
public void add(Media pObject) {
// Resize our array.
resizeArray(mArray,(mArray.length + 1));
// add our object to the array.
mArray[i] = pObject;
++i; // the new index.
}
}
Jag lägger till ett objekt i arrayn av typen Media, programmet funkar bara fint fram tills jag skapar den fjärde posten som skall in i arrayn, då får jag felet:
java.lang.ArrayIndexOutOfBoundsException: 3
Arrayn verkar inte bli större.. eller är det något jag missar här? är det något jag måste ta hänsyn till för att den skall göra arrayn större.
Om oldSize är mArray.length, och pSize är mArray.length+1, vilket värde returnerar då pSize? Math.max kanske är mer passande. Varför koden fallerar först vid fjärde elementet övergår dock mitt förstånd.
Och varför använder du inte den alldeles utmärkta klassen ArrayList?
Om oldSize är mArray.length, och pSize är mArray.length+1, vilket värde returnerar då pSize? Math.max kanske är mer passande. Varför koden fallerar först vid fjärde elementet övergår dock mitt förstånd.
Och varför använder du inte den alldeles utmärkta klassen ArrayList?
Ja varför använder jag inte ArrayList .. ja varför inte .. :)
Att lägga till saker blir rätt långsamt för dig, eftersom du allokerar en ny array och kopierar över den gamla till den varje gång du lägger till nåt. Bättre att låta den växa med ett gäng element varje gång och sen bara utöka den när det behövs. Eller köra på en ArrayList som kan göra sånt åt dig, automatiskt ;)
Att lägga till saker blir rätt långsamt för dig, eftersom du allokerar en ny array och kopierar över den gamla till den varje gång du lägger till nåt. Bättre att låta den växa med ett gäng element varje gång och sen bara utöka den när det behövs. Eller köra på en ArrayList som kan göra sånt åt dig, automatiskt ;)
Jo.. det var dock en rest. uppgift som en lärare vill att jag skulle åtgärda.. får inte använda arraylist..
men skulle kunna göra som du sa och bara utöka den när det behövs. :)
Jo.. det var dock en rest. uppgift som en lärare vill att jag skulle åtgärda.. får inte använda arraylist..
men skulle kunna göra som du sa och bara utöka den när det behövs. :)
Varför kan inte lärare lära ut hur man SKA göra och sluta hålla på och hitta på en massa klurigheter. 90% av alla de som går en programmeringskurs behöver eller har inte intresset av att lära sig finlir långt ner i språket, t.ex. hur man effektivast skriver sin egen ArrayList-klass. Av de 10%-e som är kvar, kan redan hälften skriva sin egen ArrayList-klass och är bara där för att få poängen och de 5%-e som återstår borde aldrig ha släppts i närheten av ett programmeringsspråk från första början... ;)
Nä, men skämt å sido, det tar ett par, tre år att få ur nyexade programmerare vissa olater som lärare på gymnasier och högskolor lär ut...
Varför kan inte lärare lära ut hur man SKA göra och sluta hålla på och hitta på en massa klurigheter. 90% av alla de som går en programmeringskurs behöver eller har inte intresset av att lära sig finlir långt ner i språket, t.ex. hur man effektivast skriver sin egen ArrayList-klass. Av de 10%-e som är kvar, kan redan hälften skriva sin egen ArrayList-klass och är bara där för att få poängen och de 5%-e som återstår borde aldrig ha släppts i närheten av ett programmeringsspråk från första början... ;)
Nä, men skämt å sido, det tar ett par, tre år att få ur nyexade programmerare vissa olater som lärare på gymnasier och högskolor lär ut...
Nu kommer jag att få stryk. ;)
Ja, själv hade jag velat använda ArrayList.. mycket enklare hade det blivit och mycket mindre rader kod.. höhö.. :)
Nåja.. det är lite småkul i alla fall :)
266 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2