WebN00b Skrevet 17. november 2009 Del Skrevet 17. november 2009 (endret) 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 17. november 2009 av WebN00b Lenke til kommentar
Unlimited LTD Skrevet 18. november 2009 Del Skrevet 18. november 2009 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
xaco Skrevet 18. november 2009 Del Skrevet 18. november 2009 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
WebN00b Skrevet 18. november 2009 Forfatter Del Skrevet 18. november 2009 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. 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
Unlimited LTD Skrevet 18. november 2009 Del Skrevet 18. november 2009 (endret) 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 18. november 2009 av Fluesoppen Lenke til kommentar
norpheus Skrevet 18. november 2009 Del Skrevet 18. november 2009 Eventuelt kan du bruke en for løkke som nevnt lenger opp her, og putte inn en break når du har funnet en "potetgullpose" som ikke har en eier. Lenke til kommentar
WebN00b Skrevet 18. november 2009 Forfatter Del Skrevet 18. november 2009 Fluesoppen: Exactly! 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
Unlimited LTD Skrevet 18. november 2009 Del Skrevet 18. november 2009 Ja, fordi en break bare hopper ut av en løkke, vil jeg tro. Da er det mye bedre å sjekke på en variabel. Og husk at en for løkke også kan se slik ut: for(int i = 0; i < tingen.length && !found;i++) Er ikke nødvendig å bare sjekke om variablen er mindre enn tingen.length. Lenke til kommentar
xaco Skrevet 18. november 2009 Del Skrevet 18. november 2009 (endret) bare å slette, skrev før jeg tenkte. Endret 18. november 2009 av xaco Lenke til kommentar
WebN00b Skrevet 19. november 2009 Forfatter Del Skrevet 19. november 2009 (endret) Fluesoppen: Tusen takk for hjelpen! Nå fungerer programmet feilfritt! Edit: Hjerner begynte å fungere igjen Endret 19. november 2009 av WebN00b Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå