oya Skrevet 15. september 2006 Del Skrevet 15. september 2006 (endret) Holder på med ganske enkel programmering. Ønsker å ha en statement nederst i programmet som gjør at programmer går tilbake til en ønskelig plass. Har søkt litt på goto, men finner ikke ut om det er det rette. Jeg vil helst unngå å lage en uendelig løkke, da det blir mer kode enn nødvending (håper jeg). int tall = 1; start: if (tall = 1) { printer ut tall er 1 } else { printer ut tall er ikke 1 } goto start; EDIT: Lurer også på om det er en statement for å stoppe programmet. Endret 15. september 2006 av oya Lenke til kommentar
pgdx Skrevet 15. september 2006 Del Skrevet 15. september 2006 (endret) Du har jo while/do-while-løkker for dette. Og du kan komme ut av løkkene ved hjelp av break... Men hva er det du egentlig vil programmet skal gjøre? Du sier du ikke vil ha en evig løkke, men det er jo akkurat det du har laget selv... while (tall == 1) { System.out.println("Tall er 1"); } Eksempel på do-while: do { System.out.println("Skriv inn riktig tall for én gangs skyld!"); tall = innFraTastaturet.nextInt(); }while(!tall); Endret 15. september 2006 av drange Lenke til kommentar
oya Skrevet 16. september 2006 Forfatter Del Skrevet 16. september 2006 Du har jo while/do-while-løkker for dette. Og du kan komme ut av løkkene ved hjelp av break...Men hva er det du egentlig vil programmet skal gjøre? Du sier du ikke vil ha en evig løkke, men det er jo akkurat det du har laget selv... while (tall == 1) { System.out.println("Tall er 1"); } Eksempel på do-while: do { System.out.println("Skriv inn riktig tall for én gangs skyld!"); tall = innFraTastaturet.nextInt(); }while(!tall); 6872273[/snapback] Joda, er jo klar over at jeg kan gjøre dette med while-løkker. Det jeg lurer på er om det er mulig med en statement som går til en annen plass i koden. Det eksempelet jeg laget var bare for å illustrere hvordan jeg så det for meg. Du kan godt bytte ut if-løkken med en hvilken som helst kode. Poenget er at jeg leter etter en enklere måte å gå til et gitt punkt i koden, uten å bruke while-løkke (det er enkelt, men det blir så mye rot {}{}{}{}) Lenke til kommentar
pgdx Skrevet 16. september 2006 Del Skrevet 16. september 2006 Kanskje du vil begynne med OOP? Lenke til kommentar
drool Skrevet 16. september 2006 Del Skrevet 16. september 2006 Tror også du skal satse på oop. skjønnet ikke helt vitsen med å gå til et spesiellt punkt i koden. Lenke til kommentar
oya Skrevet 16. september 2006 Forfatter Del Skrevet 16. september 2006 Den tid den sorg. Får bare bruke while-løkke da.. Lenke til kommentar
drool Skrevet 16. september 2006 Del Skrevet 16. september 2006 Den tid den sorg. Får bare bruke while-løkke da.. 6873923[/snapback] whil-løkker funker fint det for-løkker for den saks skyld også Er det skole oppgaver du driver på med? Lenke til kommentar
Torsph Skrevet 16. september 2006 Del Skrevet 16. september 2006 En litt annen ting, hvis det er greit for trådstarter da.. Hvordan kan jeg skrive til et array? String[][] Eier = new String[10][10]; double[][] Brukt = new double[10][10]; skjerm.outln("Velg plass (O(x,y)):"); int radnr = tast.inInt("O(,"); int kolnr = tast.inInt(",)"); if ((radnr > 10) && (kolnr > 10)) { skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ")"); } else { skjerm.out("Ikke gyldig plass"); } Skal ha den til å legge inn et navn i eier og (x,y) verdi i double.. kan nok bruk en "for" kommando. Men sliter litt med å finne ut hvordan. Lenke til kommentar
oya Skrevet 16. september 2006 Forfatter Del Skrevet 16. september 2006 ligner litt på oppgaven jeg holder på med nå ved UiO Lenke til kommentar
Torsph Skrevet 16. september 2006 Del Skrevet 16. september 2006 ligner litt på oppgaven jeg holder på med nå ved UiO 6878094[/snapback] Det er nok den ja weee flere enn bare meg.. har du funnet ut noe på den eller ?? =) Lenke til kommentar
pgdx Skrevet 17. september 2006 Del Skrevet 17. september 2006 Du må ha to nøstede for-løkker: for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[0].length; j++) { array[i][j] = tallet; } } Med forbehold om feil... Lenke til kommentar
Patton Skrevet 17. september 2006 Del Skrevet 17. september 2006 Oya, hvis du har tenkt å programmere mer java, så er følgendes livsviktig å forstå : "Goto er roten til alt vondt". Jeg ser du prøver å knote til kode hvor du vil hoppe vilkårlig rundt, og det er feil, feil, feil. Beklager min litt ufine måte å formulere meg på, men du er nødt å radikalt endre din tankegang når det gjelder implementasjon av algoritmer i et objekt orientert språk. Senere kommer du til å slite hvis du ikke kommer inn i OOP tankegangen allerede fra starten av. Så, hva er det du skal programmere? Hva er ditt endelige mål, som jeg antar denne kodesnutten er en del av? Lenke til kommentar
Torsph Skrevet 17. september 2006 Del Skrevet 17. september 2006 Du må ha to nøstede for-løkker: for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[0].length; j++) { array[i][j] = tallet; } } Med forbehold om feil... 6879416[/snapback] skjerm.outln("** Kj0p et utvinningsfelt **"); skjerm.outln("Velg plass (F(x,y)):"); for (int i = 0; i < feltEier.length; i++) { for (int j = 0; j < feltEier[0].length; j++) { int i = tast.inInt("F(,"); int j = tast.inInt(",)"); } } skjønte ikke helt hva du mente.. Lenke til kommentar
pgdx Skrevet 17. september 2006 Del Skrevet 17. september 2006 Du spør om hvordan man kan skrive til et array, og det er jo ikke vanskeligere enn å skrive til noe hvilket som helst annet, men du demonstrerer med to-dimensjonale array. Et vanlig array skriver man jo bare til slik: arrayNavn[0] = 3; arrayNavn[1] = 64; arrayNavn[2] = 42; arrayNavn[3] = 666; Det samme gjelder todimensjonale, men da må du skrive til ganske mange flere felt: toDimensjonal[0][0] = 4; toDimensjonal[0][1] = 1; toDimensjonal[1][o] = 0; toDimensjonal[1][1] = 7; Men hva vil du? Lenke til kommentar
Torsph Skrevet 17. september 2006 Del Skrevet 17. september 2006 Jeg har en oppgave der jeg skal kunne "selge" oljefelt.. Det skal legges inn et navn til hvert [ i ][ j ] område. Man skal kunne velge et område ved å skrive fra tastaturet, og hvis det ikke er opptatt skal det legges inn i det valgte området. String[][] feltEier = new String[15][25]; double[][] utvunnet = new double[15][25]; skjerm.outln("** Kj0p et utvinningsfelt **"); skjerm.outln("Velg plass (F(x,y)):"); for (int i = 0; i < feltEier.length; i++) { for (int j = 0; j < feltEier[0].length; j++) { int i = tast.inInt("F(,"); int j = tast.inInt(",)"); } } Skjønner du hva jeg skal fram til? Lenke til kommentar
pgdx Skrevet 17. september 2006 Del Skrevet 17. september 2006 Ja, da skal du jo skrive inn X og Y for hånd, antar jeg, og da bruker du bare noe ala dette: Scanner input = new Scanner(System.in); //Velger X-koordinat x = input.nextInt(); //Velger Y-koordinat y = input.nextInt(); if (!array[x][y]) { //Velger navn array[x][y] = input.next(); } else { System.out.println("OPPTATT!!!"); } Disclaimer: Vet ikke om (array[x][y]) er true hvis det finnes noe i den og false hvis den er en null-peker, men det finner du nok kjapt ut av... Lenke til kommentar
oya Skrevet 18. september 2006 Forfatter Del Skrevet 18. september 2006 Jeg har en oppgave der jeg skal kunne "selge" oljefelt.. Det skal legges inn et navn til hvert [ i ][ j ] område. Man skal kunne velge et område ved å skrive fra tastaturet, og hvis det ikke er opptatt skal det legges inn i det valgte området. String[][] feltEier = new String[15][25]; double[][] utvunnet = new double[15][25]; skjerm.outln("** Kj0p et utvinningsfelt **"); skjerm.outln("Velg plass (F(x,y)):"); for (int i = 0; i < feltEier.length; i++) { for (int j = 0; j < feltEier[0].length; j++) { int i = tast.inInt("F(,"); int j = tast.inInt(",)"); } } Skjønner du hva jeg skal fram til? 6883125[/snapback] easyIO du bruker. Tror ikke du trenger å bruke den for-løkka. Brukeren skal skrive inn eksempelsvic F(2,2). int i = tast.inInt("F(,"); int j = tast.inInt(",)"); tast = new In(); new In() gjør at tast blir "resetet". Fant ut at det er lurt å gjøre det etter hver gang man har brukt tast. Hvis ikke kan det bli mye tull når man skal bruke samme tast senere i programmet. Det jeg derimot kunne tenke meg å få til, er at man kan skrive inn liten F ( f(2,2). Har ikke prøvd så mye på dette, skulle tro man kan bruke upper/lower-case en plass. Noen tips? Lenke til kommentar
Torsph Skrevet 19. september 2006 Del Skrevet 19. september 2006 (endret) Du kan vel bruke disse konverterings kodene. toUpperCase(); og toLowerCase(); Men det jeg lurte på er at når jeg skriver skjerm.outln("Velg plass F(x,y):"); int radnr = tast.inInt("F(,"); int kolnr = tast.inInt(",)"); tast = new In(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ")"); skjerm.outln("Velg hvem plassen skal selges til"); feltEier[radnr][kolnr] = tast.inLine(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ") og plassen ble solgt til " + feltEier[radnr][kolnr]); Så fungerer koden helt perfekt. Men etter jeg har taster F(x,y) så kommer det forventet et heltall. prøv igjen: men programt fortsetter.. Og du får lagt inn navnet osv.. Endret 19. september 2006 av NeXz Lenke til kommentar
oya Skrevet 20. september 2006 Forfatter Del Skrevet 20. september 2006 Du kan vel bruke disse konverterings kodene. toUpperCase(); og toLowerCase(); Men det jeg lurte på er at når jeg skriver skjerm.outln("Velg plass F(x,y):"); int radnr = tast.inInt("F(,"); int kolnr = tast.inInt(",)"); tast = new In(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ")"); skjerm.outln("Velg hvem plassen skal selges til"); feltEier[radnr][kolnr] = tast.inLine(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ") og plassen ble solgt til " + feltEier[radnr][kolnr]); Så fungerer koden helt perfekt. Men etter jeg har taster F(x,y) så kommer det forventet et heltall. prøv igjen: men programt fortsetter.. Og du får lagt inn navnet osv.. 6894731[/snapback] Du kan vel bruke disse konverterings kodene. toUpperCase(); og toLowerCase(); Men det jeg lurte på er at når jeg skriver skjerm.outln("Velg plass F(x,y):"); int radnr = tast.inInt("F(,"); int kolnr = tast.inInt(",)"); tast = new In(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ")"); skjerm.outln("Velg hvem plassen skal selges til"); feltEier[radnr][kolnr] = tast.inLine(); skjerm.outln("Du valgte F(" + radnr + "," + kolnr + ") og plassen ble solgt til " + feltEier[radnr][kolnr]); Så fungerer koden helt perfekt. Men etter jeg har taster F(x,y) så kommer det forventet et heltall. prøv igjen: men programt fortsetter.. Og du får lagt inn navnet osv.. 6894731[/snapback] Fungerer fint hos meg med denne koden: // Registrering av oljefelt skjerm.out("Oppgi feltet som ønskes kjøpt: "); int radnr = tastatur.inInt(" /nFf(,"); int kolnr = tastatur.inInt(",)"); tastatur = new In(); Det kan hende at det ligger noe i tastatur før du kjører koden. Lenke til kommentar
Mortal Skrevet 20. september 2006 Del Skrevet 20. september 2006 goto er en uting og har ikke blitt tatt med i noe seriøst språk siden en eller annen fant på dette med while og for o.l. goto resulterer lett i det man kaller spaghettikode, som ikke er fint for noe annet en hodepine. 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å