Gå til innhold

[Løst]Velge første ledige objekt "automatisk".


Anbefalte innlegg

La oss si at du har:

Ting tingen[] = new Ting[5]

 

Tingene skal automatisk tillegges en String eier der "eier" blir satt via input fra bruker. Dette skal bare skje hvis "tingen"-objektet er ledig (altså

(if tingen[i].erLedig())

, erLedig er da en boolean-metode) noe en for-løkke sørger for å lete gjennom arrayet etter.

 

Hvis forklaringen min gir mening, hvordan ville du gått frem for å gjøre det?

Endret av WebN00b
Lenke til kommentar
Videoannonse
Annonse

Er ikke helt sikker på at det er dette du mener. Når er en ting 'ledig'? Når noen eier den?

 

class Ting{

private String eier;
public boolean erLedig(){
	if (eier == null)
		return true;
	else return false;
}

public void taEierskap(String eier){
	this.eier = eier;
}

public static void main(String args[]){
	Ting tingen[] = new Ting[5];
	for (Ting t: tingen){
		t = new Ting();
		t.taEierskap("Meg");//Eller les inn
	}
	// do other stuff
	for (Ting t: tingen){
		if (t.erLedig()){
			//Tingen er ledig, altså ingen eier.
		}
	}
}
}

Lenke til kommentar
La oss si at du har:

Ting tingen[] = new Ting[5]

 

Tingene skal automatisk tillegges en String eier der "eier" blir satt via input fra bruker. Dette skal bare skje hvis "tingen"-objektet er ledig (altså

(if tingen[i].erLedig())

, erLedig er da en boolean-metode) noe en for-løkke sørger for å lete gjennom arrayet etter.

 

Hvis forklaringen min gir mening, hvordan ville du gått frem for å gjøre det?

 

det du kan gjøre er jo å bruke if til å sjekke om tingen[].eier er "null".

 

eksempel.

class A {
public static void main(String[] args){
Ting tingen[] =  new Ting[5];
for(int i = 0; i<4; i++){
if(tingen[i].eier == null){
//vis stringen eier er tom går den hit
}
else{
//vis den har verdi her
}

}
}

class Ting{
String eier;
}

 

 

noe sånt du tenkte på?

Lenke til kommentar

Bare for å ha sagt det. Dette er i forbindelse med en oppgave jeg selv har laget meg i forbindelse med repetisjon før eksamen. Akkurat dette søket gjennom objekter (her: tingene) har jeg ikke fått til i tidligere oppgaver og har aldri husket å spørre på skolen. Dumt, men sant. :p

 

Fluesoppen: Med at en ting er ledig mener jeg at ingen eier den. La oss si at vi har 5 potetgullposer. De ligger uten "eier" i hylla i butikken (ser da bort fra at eieren da teknisk sett er butikken selv) frem til noen kjøper den. Kjøperen av potetgullet blir da eieren. Med andre ord er det jeg er på jakt etter en metode som søker gjennom posene, sjekker om de alt har eier. Selve søket gjennom posene er jo enkelt å få til (jeg har prøvd med for-løkke og if), men det er det å få programmet til å slutte å søke så fort den har tildelt eier på en pose. Når jeg prøvde ble samme eiere satt til alle posene.

 

Det ble en veldig lang forklaring, men måten du foreslår ser interessant ut. Den må jeg prøve. :)

 

xaco: Det er omtrent sånn jeg har forsøkt og da sluttet ikke programmet å tildele eier før alle ledige ting (la oss si potetgullposer her også) hadde fått samme eier. Det sluttet altså ikke etter at eier var satt på den første ledige posen den kom til.

 

Tenkte en stund på å legge inn en break etter if, før else, men hvis jeg utvidet til 2D-array satte den eier på begge de første tingene. Den hoppet da riktignok over resten.

Lenke til kommentar

Ah, du vil altså ha en Array med Ting (potetgullposer) som skal forestille en hylle i en butikk. Og når en person kjøper denne posen vil altså den få en eier, og at den dermed ikke er ledig mer. Skjønner.

Så du er ute etter en metode "buy(String owner)" som setter owner på den første ledige posen?

 

edit:

Tror dette skal gjøre susen. Har ikke testet det, men det er hvertfall en start.

class Ting{

private String eier;

public boolean erLedig(){
	if (eier == null)
		return true;
	else return false;
}

public void taEierskap(String eier){
	this.eier = eier;
}

}

public class Main{
private Ting[] tingen = new Ting[5];

public Main(){
	for (Ting t: tingen){
		t = new Ting(); // Lager en ny Ting for hver Ting.
	}
	String lesInn = //JOptionPane, lese inn fra konsolen, fra fil, etc...
	buy(lesInn);

}

public void buy(String eier){
	boolean found = false;
	int i = -1;
	while (!found && i < tingen.length){
		if (tingen[++i].erLedig()){ // Setter i til -1 for å få 0 på første kjøring.
		tingen[i].taEierskap(eier);
		found = true;
	}
}

public static void main(String args[]){
	new Main();
}
}

Endret av Fluesoppen
Lenke til kommentar

Fluesoppen: Exactly! :D Skal prøve det du foreslår! :)

 

norpheus: Som jeg skrev i forrige posten min prøvde jeg på det. Det fungerer så lenge jeg bare har et enkelt array, men hvis jeg utvider til 2D-array (der jeg f.eks. har 5 potetgullposer i 5 butikkhyller) setter programmet eier på den første potetgullposen i hver eneste hylle før det er ferdig. Og ikke bare den første ledige posen den kommer til.

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