Gå til innhold

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


Anbefalte innlegg

Skrevet (endret)

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
Videoannonse
Annonse
Skrevet
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. :)

Skrevet

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

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

Skrevet (endret)

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
Skrevet

Litt viderespørsmål, hvis det er greit: Hvordan kan man sjekke at det man lagrer i arrayen ikke finnes andre plasser i arrayen?

Skrevet (endret)
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
Skrevet
Litt viderespørsmål, hvis det er greit: Hvordan kan man sjekke at det man lagrer i arrayen ikke finnes andre plasser i arrayen?

6891445[/snapback]

Da må man vel enten ha en sortert array, eller man blir tvunget til å loope gjennom hele arrayen og sjekke hvert element.

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

6891831[/snapback]

Det er veldig rart... Sjekket koden her nå, og det fungerte bra her...

Skjermbilde som bevis

Skrevet (endret)

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
Skrevet

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

Skrevet

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!");}

 

}

Skrevet (endret)

Tusen takk for hjelpen! :) Ved å se på aleh sin kode i tillegg til de andre klarte jeg å snekre sammen en kodesnutt og sette inn i den eksisterende koden.

Endret av sveioen

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