Feh Skrevet 27. september 2006 Del Skrevet 27. september 2006 (endret) Litt innviklet dette her (for jeg skjønner ikke bæret) men jeg kan paste litt av oppgaveteksten: Dette arryaet er deklarert: String[][] eier = new String[15][25]; double[][] utvunnet = new double[15][25]; Dermed vil f.eks. eier[3][5] være navnet på oljeselskapet som eier feltet F(3,5), og utvunnet[3][5] vil være antall fat olje som er utvunnet på dette feltet Dette skal jeg gjøre (jeg skal lage et array? for å finne ut OM alle feltene innenfor arrayet over er solgt eller ikke. Er de solgt, skal jeg gi en beskjed om at de må først annulere et kjøp for så å legge inn et nytt. Er det ledige felt igjen, skal den hoppe ut av løkka og fortsette videre med å taste inn hvilket felt de skal kjøpe) (det i fet skrift er det jeg lurer på) Kjøp et felt. Programmet må ha en måte å finne ut om et felt er solgt eller ikke. En enkel måte å finne ut om f.eks. F(3,6) er solgt er å se om eier[3][6] er satt til et navn eller ikke. Rett etter at 2D-arrayen eier er deklarert er alle verdiene i arrayen lik den spesielle verdien null, og du kan derfor sjekke om F(3,6) er ledig ved å teste om eier[3][6] == null. Når programmet skal lese inn navnet på feltet som skal selges, må du klare å trekke ut radnummeret og kolonnenummeret fra feltnavnet. Hvis f.eks. brukeren skriver "F(3,6)" så må du altså klare å "få tak i" tallene 3 og 6 siden du trenger disse når du skal sette inn navnet på oljeselskapet i eier-arrayen. Dette kan gjøres på flere måter; en av dem er å bruke setningene int radnr = tast.inInt(" \n\rF(,)"); int kolnr = tast.inInt(" \n\rF(,)"); Her er det en variant av inInt() som brukes. Det som står i anførselstegn er de tegnene som skal betraktes som skilletegn - altså de tegnene som inInt skal se på som "blanke tegn" (vi må også ha med evt. blank, vognretur:\r og linjeskift:\n for det kan henge igjen fra noe vi har skrevet inn tidligere). Her ligger selve java fila (den er feil som faen tror jeg) hvis noen gidder å ta en titt: http://hosted.myztc.net/junta/ogli2.java edit: programmet er feil, men problemet er i case 1: (starten, det er der jeg skal få det til å sjekke om det finnes ledige oljefelt eller ikke, definert i String.) Endret 27. september 2006 av Feh Lenke til kommentar
Qwark Skrevet 27. september 2006 Del Skrevet 27. september 2006 (endret) eier[][] != null og } else if (eier[][] == null) { Hvorfor 'else if' her? + samme feil som ovenfor. Dette er vel ikke lov og gir komplimeringsfeil, du må gå igjenom heile tabellen og sjekke om det er noen som ikke er null. Håper inderlig at ikke dette er en skoleoppgave som skal leveres inn, da dette ikke er objektorientert programmering, Java er et objekt orientert programeringspråk. Her en er metode som sjekker om tabellen din inneholder noen 'null' , og returnerer false om den finner noen. public boolean sjekkOmNull(String [][] t){ for (int i = 0; i<t.length;i++){ for (int j = 0; j<t[i].length;j++){ if (t[i][j] == null)return false; } }return true; } Endret 27. september 2006 av Qwark Lenke til kommentar
pgdx Skrevet 27. september 2006 Del Skrevet 27. september 2006 (endret) Håper inderlig at ikke dette er en skoleoppgave som skal leveres inn, da dette ikke er objektorientert programmering, Java er et objekt orientert programeringspråk.Du trenger ikke være så hard. Innføring i programmering begynner aldri rett på den OO delen av programmeringen. I begynnelsen må man bare lære å tenke logisk som en datamaskin gjør det, og lære seg å lese koden linje for linje... Skal du sjekke hver plassering i arrayet, må du gjøre slik: for (int i = 0; i < eier.length; i++) { for (int j = 0; j < eier[0].length; j++) { if (eier[i][j] == null) { ... } } } Med forbehold om feil. Endret 27. september 2006 av drange Lenke til kommentar
Feh Skrevet 27. september 2006 Forfatter Del Skrevet 27. september 2006 (endret) Den lille kodebiten der gjorde susen den eneste jeg måtte legge til var at eier[j] != null så stopper den og sier at det ikke fins noen felt å kjøpe, hvis det finnes felt går den bare videre til å spørre brukeren om å taste inn et felt, og så lagre kjøpet. Oppgaven skal levers i faget inf1000, objektorientert programmering ja Men det der er bare en liten del av oppgaven, og nevermind det som står lenger ned der, den er langt fra ferdig. Det hele oppgaven går ut på er å lage et program med oversikt over oljefelt. Brukeren skal kunne: -sjekke om det er ledige oljefelt -kjøpe oljefelt -registrere et navn på de forskjellige oljefeltene -utvinning av olje -annulere kjøp av felt -lage oversiktskart over kjøpte felt -liste over oljeselskap og total utvunnet olje pr. selskap som nevnt over så er det jo da 14x25 mulige felt å kjøpe dvs, fra F(0-14,0-24)... Poster her i morra etter skolen når programmet begynner å forme seg litt bedre. Endret 27. september 2006 av Feh Lenke til kommentar
Feh Skrevet 27. september 2006 Forfatter Del Skrevet 27. september 2006 (endret) Jeg fikk forsåvidt til den lille biten, det som videre er problemet nå, er at selv om jeg skriver inn et oljefelt som er gyldig (ikke opptatt), så går den videre og skriver ut linja under "det er ingen ledige...." koden min ser nå sånn ut: int sjekk = 0; for (int i=0; i<14; i++) { for (int j=0; j<24; j++) { if (eier[i][j] ==null) { }else if (eier[i][j]!=null) { System.out.println("Det finnes ingen ledige olj...."); Hva skal jeg skrive mellom if linja og den else if greia, for å få den til å hoppe ut av løkka dersom det finnes ledige oljefelt? Mulig jeg ikke har definert hva jeg er ute etter bra nok. Jeg skal ha disse linjene til å sjekke om det finnes ledige felt eller ikke, innenfor arrayet jeg skrev i første post, String[][] eier = new String[15][25]. hvis det IKKE finnes ledige felt, skal jeg ha den til å skrive ut linja over, MEN hvis det finnes ledige felt, skal den bare hoppe videre nedover og så be brukeren om å taste inn et felt på formen F(3,4) (tallene bare eksempler), og det har jeg skrivd slik: System.out.println("Du gjorde valg 1, kjøpe et felt. Skriv inn det feltet du ønsker å kjøpe"); int radnr = tast.inInt(" \n\rF(,)"); int kolnr = tast.inInt(" \n\rF(,)"); Endret 27. september 2006 av Feh Lenke til kommentar
Qwark Skrevet 28. september 2006 Del Skrevet 28. september 2006 (endret) if (eier[i][j] ==null) { }else if (eier[i][j]!=null) { Det du sier her er at hvis feltet eier [j] er null eller feltet eier [j] ikke er null så ..... Endret 28. september 2006 av Qwark Lenke til kommentar
Feh Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 if (eier[i][j] ==null) { }else if (eier[i][j]!=null) { Det du sier her er at hvis feltet eier [j] er null eller feltet eier [j] ikke er null så ..... 6955849[/snapback] Yeah. jeg lurer på hva jeg skal putte i mellom for å få den til å hoppe ut av løkka hvis den første setningen er "gyldig", dvs at det er et eller flere oljefelt som er ledig(e). Lenke til kommentar
aleh Skrevet 28. september 2006 Del Skrevet 28. september 2006 Nå har jeg ikke lest lest alle innleggene og vet ikke helt hva det handler om, men du kan bruke break; til å hoppe ut av løkker. Lenke til kommentar
Qwark Skrevet 28. september 2006 Del Skrevet 28. september 2006 Hva med: if (eier[i][j] !=null) { System.out.println("Det finnes ingen ledige olj...."); }else ... Skulle ikke det bli rett Lenke til kommentar
Feh Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 (endret) Var på skolen istad og fikk hjelp til det. Den riktige biten med kode ble: boolean sjekk = false; for (int i = 0; i < 14; i++) { for (int j = 0; j < 24; j++) { if (eier[i][j] == null) { sjekk = true; } } } if (sjekk == false) { System.out.println("Det er desverre ingen felt igjen for salg."); Endret 28. september 2006 av Feh Lenke til kommentar
Feh Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 Har fått løkka til å fungere, men nå har det oppstått et annet problem, i denne kodebiten her: else { System.out.println(); System.out.println("Skriv inn hvilket felt du vil kjøpe F(0-14,(0-24)"); int rad = tast.inInt(" \n\rF(,)"); int kol = tast.inInt(" \n\rF(,)"); System.out.println(); System.out.println("Du valgte oljefelt F" + "(" + rad + "," + kol + ")" + "Skriv navnet på oljeselskapet som skal kjøpe feltet:"); String oljeselskap = tast.inWord("\r"); if (eier[rad][kol]==null) { eier[rad][kol]= oljeselskap; System.out.println("Oljeselskapet ditt, " + oljeselskap + " har kjøpt feltet: F(" + rad + "," + kol + ")"); } } Det som ikke fungerer, er etter jeg har skrevet inn koordinatene for feltet jeg vil kjøpe, så går den FORBI String oljeselskap = tast.inWord("\r"); Det samme skjedde da jeg prøvde å kjøre et program som var ferdig (fra en annen kar), og som han mente fungerte 100%. Kan det være noe kluss med windows og cmd som ikke skjønner hva den mener? Eller er det muligens java kompilatoren min som ikke fungerer som den skal? Lenke til kommentar
Qwark Skrevet 28. september 2006 Del Skrevet 28. september 2006 Kan du legge ut koden som du har nå. Lenke til kommentar
pgdx Skrevet 28. september 2006 Del Skrevet 28. september 2006 Og hvordan fungerer inWord(), da? Lenke til kommentar
Feh Skrevet 28. september 2006 Forfatter Del Skrevet 28. september 2006 Jeg fikk hjelp til det nå. Det som manglet var bare en tast.readLine(); et par steder Nå fungerer de to første casene som de skal. Hele koden ligger på her 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å