Kurt_im Skrevet 9. april 2007 Del Skrevet 9. april 2007 Hei Jeg har flere 2darrays som ser slik ut: int[][] numbers = {{0,1,2,3,4,5},{2,2,3,3,2,2},{5,4,5,4,5,4},{1,0,2,9,8,3},{4,5,9,2,5,6},{3,3,0,0,0,0}}; int[][] numbers2= {{0,1,2,3,4,5},{2,2,3,3,2,2},{5,4,5,4,5,4},{1,0,2,9,8,3},{4,5,9,2,5,6},{3,3,0,0,0,0,}}; int[][] numbers3= {{0,1,2,3,4,5},{2,2,3,3,2,2},{5,4,5,4,5,4},{1,0,2,9,8,3},{4,5,9,2,5,6},{3,3,0,0,0,0}}; og en annen 2d array hvor jeg vil lagre all data fra overstående arrayes på denne måten int[][] numb = {{0,1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0}, {1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0}, {1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0}}; Altså jeg vil ta all data fra numbers tabellen og sette på plass 1, all data fra numbers2 tabellen sette på plass 2 osv: Skal se slikt ut : numb[0][0,1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0] numb[1][0,1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0] numb[2][0,1,2,3,4,5,2,2,3,3,2,2,5,4,5,4,5,4,1,0,2,9,8,3,4,5,9,2,5,6,3,3,0,0,0,0] osv... Hvordan gjør jeg dette Lenke til kommentar
aC Skrevet 9. april 2007 Del Skrevet 9. april 2007 (endret) Det som er mest normalt er å bruke er 2 for løkker. aka for(int i; numbers.length<i; i++){ for(int j=0; numbers[i].length<j; j++){ // Her foretar man et variabelskifte } } Jeg følte jeg trengte en lite utfordring siden jeg nettopp hadde stått opp så kokte sammen dette, det er desverre en utfattelig tungvint måte å swap'e på, men noen andre en megselv kan kanskje lage bedre? http://pastebin.ca/431129 edit: leif Endret 9. april 2007 av aC Lenke til kommentar
Kurt_im Skrevet 9. april 2007 Forfatter Del Skrevet 9. april 2007 Jeg kom frem til denne: int x= 0; for(int i= 0, k= 0;i<6;i++) { for(int j= 0;j<6;j++) { numb[x][k++]= numbers2[i][j]; } } x++; men denne går kun på numbers2 altså man må oppgi hvilken array den skal hente fra. Hadde vært fint om det ble noe som; int x= 0; for(int i=0; i<3; i++) { for(int i= 0, k= 0;i<6;i++) { for(int j= 0;j<6;j++) { numb[x][k++]= numbers+i+[i][j]; } } x++; } Dette forutsetter at jeg vet hvor mange tabeller det er den skal hente data fra. Og det vet jeg forsåvidt, slik at det eneste jeg treger å få til her nå, er hvordan jeg slår sammen number+i+i[j] slik at den øker oppover og blir numbers2[j] og numbers3[j] osv Lenke til kommentar
aC Skrevet 9. april 2007 Del Skrevet 9. april 2007 Dette forutsetter at jeg vet hvor mange tabeller det er den skal hente data fra. Og det vet jeg forsåvidt, slik at det eneste jeg treger å få til her nå, er hvordan jeg slår sammen number+i+i[j] slik at den øker oppover og blir numbers2[j] og numbers3[j] osv 8343910[/snapback] Det var derfor jeg var nødt til å bruke 3 dobble for lopper.. Men de heter jo forsåvidt numbers(1) 2 og 3 så du kunne lagt de tredimm. Men hvorfor ikke mekke klasser class Numbers{ numbers[][] = {{massetall}} } Numbers[] numb = new Numbers[]; Dette er mye bedre objektorientert. Lenke til kommentar
Kurt_im Skrevet 9. april 2007 Forfatter Del Skrevet 9. april 2007 Antallet av tabeller som jeg får er ikke konstant 3. Tallet er variabelt. Derfor må jeg kunne bytte tallet. Of topic: Ser forøvrig at du studerer på uio, og tar exphil i år?. Jeg har selv exphil i år. Oppgaven jeg sliter med er en oblig i in1010, nærmere oblig 3 sudoku med GUI. Blir helt frustrert av de forventer at man skal klare på kort tid... hehe, ja får håpe det ordner seg Lenke til kommentar
aC Skrevet 9. april 2007 Del Skrevet 9. april 2007 (endret) Heh, kult. Driver akkuratt og porter den obligen til C for å se om det blir noe bedre tid på 16x16 soduko'ene som tar evig lang tid for øyeblikket. Bruker nesten 3-4 timer. Of topic:Ser forøvrig at du studerer på uio, og tar exphil i år?. Jeg har selv exphil i år. Oppgaven jeg sliter med er en oblig i in1010, nærmere oblig 3 sudoku med GUI. Blir helt frustrert av de forventer at man skal klare på kort tid... hehe, ja får håpe det ordner seg Det pleier ikke være noe stress å få flere frister, er bare viktig å levere noe. Ellers er det jo litt morsomt å kode grafisk for engangs skyld da. Endret 9. april 2007 av aC Lenke til kommentar
Kurt_im Skrevet 11. april 2007 Forfatter Del Skrevet 11. april 2007 Joa sant det. Men det kommer litt ann på veileder man får. Ikke alle er like greie for å si det slik. GUI er gøy, absolutt. Uansett et nytt issue har dukket opp, så jeg tenkte å bare fortsette i denne posten.(virker nesten som det er bare du som svarer uansett Denne gangen trenger jeg å gjøre det omvent, altså fylle tilbake fra en array til en 2darray. Dette er koden, men den stopper opp et de 6 første radene i numbers array: for(int g = 0; g < numbers.length; g++) // looper gjennom 1d arrayen { int a = 0; for(int i = 0; i < storrelse; i++) //looper så gjennom 2darrayen for å fylle in den { for(int j = 0; j < storrelse; j ++)//looper så gjennom 2darrayen for å fylle in den { if(numbers[i].getText().toString().equals("")) // henter innholdet fra 1d arrayen { ss = 0; brettFil[a][i++] = ss; // og putter det i 2d arrayen } else { s = numbers[i].getText(); ss = Integer.parseInt(s); brettFil[a][i++] = ss; //System.out.print(brettFil[i][j]); } } }a++; //System.out.print("// "); } Dette er resultatet jeg får når jeg lopper gjennom den nye 2d arrayen: 401003000000000000000000000000000000 Mens resultatet skulle vært: 401003000000000020260000000300300102 Ser ut som den får med seg bare de 6 første talla, men når jeg endrer i'en i = numbers til numbers[g] får jeg nullpointer Lenke til kommentar
aC Skrevet 11. april 2007 Del Skrevet 11. april 2007 Her må du gi meg mere info, du bruker mange varr. her som ikke er nevnt. Du er nødt til å ha med hel kode, med faktiske verdier. Ellers er det umulig å debugge.. Lenke til kommentar
Kurt_im Skrevet 11. april 2007 Forfatter Del Skrevet 11. april 2007 Ok JTextField numbers[] = new JTextField[36]; int[][] brettFil = new int[6][6]; for(int g = 0; g < numbers.length; g++) { int a = 0; for(int i = 0; i < storrelse; i++) { for(int j = 0; j < storrelse; j ++) { if(numbers[i].getText().toString().equals("")) { ss = 0; brettFil[a][i++] = ss; } else { s = numbers[i].getText(); ss = Integer.parseInt(s); brettFil[a][i++] = ss; //System.out.print(brettFil[i][j]); } } }a++; //System.out.print("// "); } Cluet er å løpe gjennom numbers arrayen, ta alle verdiene derfra og putte dem i 2d arrayen hvor rad 0 består av 6 første verdiene fra numbers, rad 1 av 6 neste verdiene osv. I det hele tatt en reverse av løkka jeg spurte om hjelp i begynnelsen hvor alt settes tilbake i en 2d array Lenke til kommentar
aC Skrevet 11. april 2007 Del Skrevet 11. april 2007 (endret) PHP * 6 er da lengden bortover påbrettet ditt * denne skal du vel lese inn nr du henter * fila.. i/lengde = hvilken kolonne (nedover) * du er i. i%lengde = hvilken av de 6 bortover du * er i.. void swapBack(){ int lengde=6; int a; int b; for(int i=0; i<35; i++){ a=i/lengde; b=i%lengde; brett[a] = 1d; } } Du trenger ikke 3 for løkker, når man har så mange vet man man er på vei mot dissaster.. første lille algorimte = 0-5 / 6 = 0 [her] andre kolonne 6-11 / 6 = 1 [her] osv. [] [] [] [] bortver så tar vi ibruk modulo teknologi deler hele antaller på 6 og finner remainder. ps. ikke deklarer int inni i en løkke, aka for (blah bah){ int blah=5435; } // FYYYY heller deklarer den før int vlah for (blah fhdsjkf){ vlah = 4543;} // Hurray Endret 11. april 2007 av aC Lenke til kommentar
Kurt_im Skrevet 12. april 2007 Forfatter Del Skrevet 12. april 2007 (endret) Supert Den funka. Veldig bra tilbakemelding. Jeg klarte også knote meg frem til en løsning: int int n = 0; for(int i = 0; i<storrelse; i++) { for(int j = 0; j<storrelse; j++) { if(numbers[n].getText().toString().equals("")) { ss = 0; brettFil[i][j] = ss; n++; } else { s = numbers[n].getText(); ss = Integer.parseInt(s); brettFil[i][j] = ss; n++; } } }*/ Tankegangen bak min første løsning var at først skulle jeg løpe gjennom arrayen jeg skulle hente data fra, og så løpe gjennom 2d arrayen for å fylle den inn. Endret 12. april 2007 av Kurt_im Lenke til kommentar
aC Skrevet 12. april 2007 Del Skrevet 12. april 2007 :!: Nice, tankegangen din på første var ikke dum, men den var ikke smart heller. Jeg skjønner hvordan du tenkte først 1 for så en dobbel en.. Også tenkte jeg at det kanskje er bedre om du får en affiny en at jeg gjør det. 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å