Gjest Slettet-yXKhlxsjUZ Skrevet 25. april 2006 Del Skrevet 25. april 2006 Hei! Noen som hadde giddet forklare meg hvordan jeg kan lage en int[][] som printer ut noe slikt med et x antall 1'ere og resten 0'ere: 0001000010 0100010000 0000000100 0000100000 0100001000 størrelsen er ikke så viktig, men skal vel være rundt 10*5. Mvh Christian Lenke til kommentar
Mr.Garibaldi Skrevet 25. april 2006 Del Skrevet 25. april 2006 (endret) Det var en heller underlig forespørsel, men men... Enkleste ville være å kjøre en dobbel for-løkke, og så kalle random() i java.lang.math, som du runder av til nærmeste int. int[][] binTall = new int[10][5]; for(int i = 0; i < 5; i++){ for(int j = 0; j <; j++){ binTall[i][j] = Math.floor(Math.random() + 0.5); } } Har ikke testet, men skulle funke. Mer info, math, floor, round. [EDIT] La ikke merke til at du ville begrense antall 1, men det er jo lett med en teller (som teller ned), og hvis den j+teller = 10, sett resten til 1 (eller sett j = 0, men da kan programmet fortsette i all evighet)... Overlater den delen til deg [/EDIT] Endret 25. april 2006 av Mr.Garibaldi Lenke til kommentar
Peter Skrevet 26. april 2006 Del Skrevet 26. april 2006 //import java.util.*; int[][] nums = new int[10][5]; Random rgen = new Random(); while(antall_enere-- > 0) { nums[rgen.nextInt(nums.length)][rgen.nextInt(nums[0].length)] = 1; } Lenke til kommentar
mungo Skrevet 27. april 2006 Del Skrevet 27. april 2006 (endret) import java.lang.Math; class BitGen1{ int[][] lagArray(int i, int j){ //int=5; //int j=10; int[][] array = new int[i][j]; for(int x = 0; x < array.length; x++){ for(int y = 0; y < array[0].length; y++){ array[x][y] = (int) Math.floor(Math.random() + 0.5); /*konverterer alle double fra resultatene fra Math.funksjonene til int-verdier.*/ } } return array; } void printArray (int[][] array){ int j; for(int i=0; i<array.length; i++){ System.out.println("[ " + array[i] + " ]"); for(j=0; j<array[0].length; j++){ System.out.print("[ " + array[i][j] + " ]"); } } } public static void main (String[] args) { BitGen1 obj = new BitGen1(); int[][] binArray = obj.lagArray(10,5); obj.printArray(binArray); } } Gir et rart resultat: [ [I@16f0472 ] [ 0 ][ 1 ][ 1 ][ 0 ][ 1 ][ [I@18d107f ] [ 1 ][ 0 ][ 0 ][ 0 ][ 0 ][ [I@360be0 ] [ 1 ][ 1 ][ 0 ][ 1 ][ 1 ][ [I@45a877 ] [ 1 ][ 1 ][ 1 ][ 0 ][ 0 ][ [I@1372a1a ] [ 0 ][ 1 ][ 1 ][ 0 ][ 1 ][ [I@ad3ba4 ] [ 0 ][ 1 ][ 0 ][ 0 ][ 1 ][ [I@126b249 ] [ 1 ][ 1 ][ 0 ][ 0 ][ 0 ][ [I@182f0db ] [ 0 ][ 1 ][ 1 ][ 0 ][ 0 ][ [I@192d342 ] [ 0 ][ 1 ][ 1 ][ 1 ][ 1 ][ [I@6b97fd ] [ 0 ][ 1 ][ 1 ][ 0 ][ 0 ] Hva er feil her? Jeg tror problemet ligger i at den bare skriver ut adressen til [j], og ikke verdien. Driver enda og finner ut om å legge inn antall enere. Stay tuned for videre progresjon. Endret 27. april 2006 av mungo Lenke til kommentar
HV Skrevet 27. april 2006 Del Skrevet 27. april 2006 Heisann Her er min løsning av problemstillingen. Jeg valgte en litt annen løsning. Jeg brukte Math.random til å finne en posisjon istede for 0/1. Fungerer som smurt, uansett hvor bred, høy eller hvor mange 1'ere du trenger. public static void main(String[] args) { int width = 5; int height = 10; int maxNumberOf1 = 5; //Fyller først hele greia med 0 int[][] array = new int[width][height]; for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[0].length; j++) { array[i][j] = 0; } } //Fyller inn x antall 1ere int teller = 0; while(teller<maxNumberOf1){ int x = (int) Math.floor(Math.random() * width); int y = (int) Math.floor(Math.random() * height); if(array[x][y]==0){ array[x][y]=1; teller++; } } //Printer ut hele "stasen" for (int i = 0; i < array.length; i++) { for (int j = 0; j < array[0].length; j++) { System.out.print(array[i][j]); } System.out.println(); } } Vennlig hilsen High Voltage Lenke til kommentar
Biera Skrevet 13. mai 2006 Del Skrevet 13. mai 2006 Hva er feil her? Denne her, muligens? System.out.println("[ " + array[i] + " ]"); 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å