Gå til innhold

Legge inn i første ledige array-"skuff"


Anbefalte innlegg

Håpet noen kunne hjelpe meg litt, i det sikkert mange vil kalle et simpelt problem. Jeg har en string-array[]. Variabelen x skal inn i det første ledige plassen i arrayet. Hvordan får jeg til det?

 

Hvis array[0] er opptatt, skal den legges i array[1]. Hvis array[1] er opptatt, skal den legges i array[2]....osv

 

Takker for all hjelp :)

Endret av sveioen
Lenke til kommentar
Videoannonse
Annonse
Håpet noen kunne hjelpe meg litt, i det sikkert mange vil kalle et simpelt problem. Jeg har en string-array[]. Variabelen x skal inn i det første ledige plassen i arrayet. Hvordan får jeg til det?

 

Hvis array[0] er opptatt, skal den legges i array[1]. Hvis array[1] er opptatt, skal den legges i array[2]....osv

 

Takker for all hjelp :)

6889739[/snapback]

 

Går ut i fra at du har lyst til å lære deg java, så da trenger jeg ikke skrive koden for deg, men kan jo gi noen hint. Det du må gjøre er å lage en løkke. Inni denne løkka må du da sjekke hver posisjon i dette arrayet. Hvis det er noe i den første posisjonen som løkka treffer på skal den hoppe et steg videre helt til den finner en tom plass. Når den finner en tom plass kan du da sette inn variabelen x der. :)

Lenke til kommentar
Hmm okei, så hvis jeg kommet så langt:

 

 

int x = 0;

if (array[x] == null {

                array[x] = selskap;

}

else {..................

 

 

 

Det er herfra jeg ikke klarer å lage noe som funker. (Nybegynner i java..)

6889975[/snapback]

Jeg tror du må bruke en while-løkke eller liknende.

Les om while-løkker (ganske enkelt), og kom tilbake med et nytt forslag.

 

Poenget er at du må gå gjennom hver "skuff" (forbanna teit ord; hvert element høres bedre ut) i arrayet, og gjøre en sjekk: "er denne tom? hvis ja; legg inn data her.. hvis nei; test neste element.

Lenke til kommentar

Bruk heller dette:

 

 

class StrengTabell {
public static void main(String[] args) {
 String[] tabell = new String[6];
 tabell[0] = "Hallo";
 tabell[1] = "Du";
 tabell[2] = "Der";
 tabell[3] = "Din";
 tabell[5] = "JA";

 for (int i = 0; i<tabell.length;i++) {
 	if (tabell[i] == null) {
   tabell[i] = "dust!!";
 	}
 }
 for (int i = 0; i<tabell.length;i++) {
 	System.out.println(tabell[i]);
 }
}
}

 

 

 

Med forbehold om feil...

Endret av drange
Lenke til kommentar
Bruk heller dette:

 

 

class StrengTabell {
public static void main(String[] args) {
 String[] tabell = new String[6];
 tabell[0] = "Hallo";
 tabell[1] = "Du";
 tabell[2] = "Der";
 tabell[3] = "Din";
 tabell[5] = "JA";

 for (int i = 0; i<tabell.length;i++) {
 	if (tabell[i] == null) {
   tabell[i] = "dust!!";
 	}
 }
 for (int i = 0; i<tabell.length;i++) {
 	System.out.println(tabell[i]);
 }
}
}

 

 

 

Med forbehold om feil...

6890068[/snapback]

 

Koden funka jo forsovet, men den fylte jo hele arrayen med "dust". Jeg skulle gjerne hatt noe som legger tekstvariabelen inn i første ledige element.

Endret av sveioen
Lenke til kommentar

Problemet er at jeg har en string array. La oss kalle den kommode :w00t:. Kommode[375].

Variabelen "sokk" skal inn første ledige skuff, HVIS den ikke ligger i en av de andre skuffene fra før. Hvordan?!

 

Vil gjerne ha kode, ettersom det for mitt vedkommende er meget lærerikt..

Endret av sveioen
Lenke til kommentar

Skjult tekst: (Marker innholdet i feltet for å se teksten):

	
 	public static void foo(){
 	
 //verdien som skal plasseres inn i tabellen
 String inputValue = "SOKK";
 
 String[] tabell = new String[6];
 tabell[0] = "Hallo";
 tabell[1] = "Du";
 tabell[2] = "Der";
 tabell[3] = "Din";
 //tabell[4] = inputValue;
 tabell[5] = "JA";

 //-1 verdien vil si at ingen ledige plasser har blitt funnet.
 int firstEmptyPos = -1;
 //settes til TRUE hvis input verdien blir funnet.
 boolean foundValue = false;
   
 for (int i = 0; i<tabell.length;i++) {
 	//sjekker om plassen er tom og om ikke en tom plassering har blitt funnet fra før.
 	if (tabell[i] == null && firstEmptyPos==-1) {
   firstEmptyPos = i;     
 	}
 	//hvis verdien finnes i tabellen hopp ut av løkken.
 	else if(inputValue.equals(tabell[i])){
   foundValue = true;
   break;    
 	}
 }
 //hvis det er funnet en ledig plass og verdien ikke finnes i listen.
 if(firstEmptyPos!=-1 && !foundValue)
 	tabell[firstEmptyPos] = inputValue;
 
 //skriver ut hele listen.
 for (int i = 0; i<tabell.length;i++) {
   System.out.println(tabell[i]);
  }
}

Du/dere kan sjekke ut denne metoden, modifiserte litt koden til drange (uten hans tillatelse) håper det går greit. :)

 

Den søker etter første ledige plassering og søker samtidig om input verdien allerede finnes i listen.

 

- Hvis den finner verdien som skal plasseres hopper den ut av løkken og det er det.

- Hvis den ikke finner verdien så plassere den verdien i den første ledige plasserignen. Denne plasseringen blir lagret i firstEmptyPos variabelen.

- Hvis det er ingen ledige plasser så skjer det ingenting.

 

Får gåsehud av denne lineære O(N) søkealgoritmen. :)

Lenke til kommentar

Siden du sier du ikke har så mye peil på java så har jeg her et eksempel på en veldig forenklet og ueffektiv(men lærerik) kode som gjøre saken for deg... har ikke testet den ut, kan være noe jeg har oversett da jeg lagde dette i farten, men du forstår sikkert poenget. så kan du etter å ha forstått denne prøve å lage den mere effektiv(bedre kode og kjøretid). her:

 

 

String[] skuff = new String[375];

 

 

public void settInn(String x){

int forsteTommeSkuffIndex = -1;

boolean skuffeFunnet = false;

 

for (int i = 0; i < skuff.length; i++) {

if(skuff.equals(x)){

break;

}

 

if (skuff == null && skuffeFunnet == false){

forsteTommeSkuffIndex = i;

skuffeFunnet = true;

}

 

}

if(forsteTommeSkuffIndex != -1){

skuff[forsteTommeSkuffIndex] = x;

}

else{System.out.println(x+" ligger allerede i skuffen!");}

 

}

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...