Gå til innhold

Anbefalte innlegg

Hei!

Jeg holder på å jobbe med en oppgave som involverer tabell/array, oppgaven går utpå at man skal lage en dvdsamling, hvor jeg på slutten skal kunne søke opp og slette en spesifikk dvd som er registrert. Sliter litt med den slettedelen, har lest mye på nettet, men ikke blitt noe klokere, noen som har tips til hvordan jeg burde starte? :)

Lenke til kommentar
Videoannonse
Annonse

Her må du nok tenke over hvordan datastruktur du har og hva du egentlig vil skal skje med den når du sletter noe. Om datastrukturen er ArrayList har den en remove() metode som kan brukes. Om datastrukturen er en array så vil du vel at sletting skal fjerne elementet fra listen.

Det er flere måter du kan gjøre dette på. Det ene er å tillate null elementer og bare sette elementet du vil fjerne til null (og ta høyde for at elementer kan være null når du gjør andre ting med listen). En annet er å fjerne elementet helt fra listen. Vanligvis vilø det si at du lager ett nytt array hvor lengden er en kortere og deretter kopierer alle elementene fra den ene arrayen til den andre unntatt elementet du vil slette.

Lenke til kommentar

Litt ekstra tid midt på natten, mulig dette ikke er best mulige måte, men er noe slikt jeg tenker. Dersom du skal bruke en helt vanlig Array.

 

int sokeInt = 100; // Det du vil søke etter, da i ditt tilfelle hente noe input.
       for(int i = 0; i<10; i++){ // Bytte ut 10 med din array størrelse.
       	if (anArray[i]==sokeInt){
       		int t = i;
       		while (t<9){ // Flytte alt et hakk bakover. Siste beholder verdien.
       			anArray[t]=anArray[t+1];
       			t++;
       		}
       	}
       }

 

Det er derimot en del lettere å bruke ArrayList, da du ikke må forhåndsbestemme størrelse, og du har .remove(int i) funksjonen.

 

Hele koden jeg brukte for å teste at det faktisk fungerte, bare om sammenhengen skulle være interessant.

 

 


public class Testest {

public static void main(String[] args) {
	int[] anArray;              // declares an array of integers

       anArray = new int[10];      // allocates memory for 10 integers

       anArray[0] = 100; // initialize first element
       anArray[1] = 200; // initialize second element
       anArray[2] = 300; // etc.
       anArray[3] = 400;
       anArray[4] = 500;
       anArray[5] = 600;
       anArray[6] = 700;
       anArray[7] = 800;
       anArray[8] = 900;
       anArray[9] = 1000;

       System.out.println("Element at index 0: " + anArray[0]);
       System.out.println("Element at index 1: " + anArray[1]);
       System.out.println("Element at index 2: " + anArray[2]);
       System.out.println("Element at index 3: " + anArray[3]);
       System.out.println("Element at index 4: " + anArray[4]);
       System.out.println("Element at index 5: " + anArray[5]);
       System.out.println("Element at index 6: " + anArray[6]);
       System.out.println("Element at index 7: " + anArray[7]);
       System.out.println("Element at index 8: " + anArray[8]);
       System.out.println("Element at index 9: " + anArray[9]);

       int sokeInt = 100;
       for(int i = 0; i<10; i++){
       	if (anArray[i]==sokeInt){
       		int t = i;
       		while (t<9){
       			anArray[t]=anArray[t+1];
       			t++;
       		}
       	}
       }

       System.out.println("----------------------------------");
       System.out.println("Element at index 0: " + anArray[0]);
       System.out.println("Element at index 1: " + anArray[1]);
       System.out.println("Element at index 2: " + anArray[2]);
       System.out.println("Element at index 3: " + anArray[3]);
       System.out.println("Element at index 4: " + anArray[4]);
       System.out.println("Element at index 5: " + anArray[5]);
       System.out.println("Element at index 6: " + anArray[6]);
       System.out.println("Element at index 7: " + anArray[7]);
       System.out.println("Element at index 8: " + anArray[8]);
       System.out.println("Element at index 9: " + anArray[9]);

}

}

 

 

Lenke til kommentar

Litt ekstra tid midt på natten, mulig dette ikke er best mulige måte, men er noe slikt jeg tenker. Dersom du skal bruke en helt vanlig Array.

 

 

Hint: System.arraycopy ...

 

Det er jo aldri dumt å bruke smarte klasser fra Collections, kanskje bortsett fra akkurat når man holder på med oppgaver hvor pointet er å lære seg å kode mot vanlige arrays ...

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å
×
×
  • Opprett ny...