2016-12-14 1 views
0

J'ai créé un tableau 2D rempli aléatoirement avec des nombres compris entre 0 et un nombre sélectionné par l'utilisateur (6 max.). Je voudrais changer ces nombres avec des couleurs, mais quand j'essaye d'assigner chaque valeur à une couleur j'obtiens le message que je ne peux pas convertir de l'int à la couleur ... Toute recomendation? parce que je suis vraiment coincéNombre entier de couleurs (JAVA)

public static void rellenarTablero(int[][] tablero) { 
    System.out.println("Introduzca el numero de colores (de 2 a 6): "); 
    Scanner in = new Scanner(System.in); 
    int colores = in.nextInt(); 
    while(colores<2||colores>6){ 
     System.out.println("Elija un numero valido:"); 
     colores = in.nextInt(); 
    } 
    for (int x = 0; x < tablero.length; x++) { 
     for (int y = 0; y < tablero[x].length; y++) { 
      tablero[x][y] =1+(int)(Math.random()*(colores)); 
      if(x==1){ 
       x=Color.BLUE; 
      }if(y==1){ 
       y=Color.BLUE; 
      } 
      if(x==2){ 
       x=Color.RED; 
      } 
      if(y==2){ 
       y=Color.RED; 
      } 
      if(x==3){ 
       x=Color.GREEN; 
      } 
      if(y==3){ 
       y=Color.GREEN; 
      } 
     } 
    } 
} 
+1

Comment ces nombres devraient être traduits en couleurs? Par exemple, si un utilisateur entre 3, quelle couleur cela devrait-il entraîner? – Jesper

+1

Vous pouvez commencer avec une carte 'Map '... – Tom

+0

, l'affectation n'est pas pertinente, mettons 1 = bleu, 2 = rouge & 3 = vert pour cet exemple, et le code est dans le modifier , désolé –

Répondre

0

Si je comprends bien, ceci devrait fixer votre code. J'ai inséré des commentaires sur les changements les plus importants que j'ai faits.

// if the table is to be filled with colors, declare it an table of Color 
public static void rellenarTablero(Color[][] tablero) { 
    System.out.println("Introduzca el numero de colores (de 2 a 6): "); 
    Scanner in = new Scanner(System.in); 
    int colores = in.nextInt(); 
    while (colores < 2 || colores > 6) { 
     System.out.println("Elija un numero valido:"); 
     colores = in.nextInt(); 
    } 
    // I prefer to use a Random object for random integers, it’s a matter of taste 
    Random rand = new Random(); 
    for (int x = 0; x < tablero.length; x++) { 
     for (int y = 0; y < tablero[x].length; y++) { 
      int numeroAleatorioDeColor = 1 + rand.nextInt(3); 
      // prefer if-else to make sure exactly one case is chosen 
      if (numeroAleatorioDeColor == 1) { 
       // fill the color into the table (not the int) 
       tablero[x][y] = Color.BLUE; 
      } 
      else if (numeroAleatorioDeColor == 2) { 
       tablero[x][y] = Color.RED; 
      } 
      else if (numeroAleatorioDeColor == 3) { 
       tablero[x][y] = Color.GREEN; 
      } 
      else { 
       System.err.println("Error interno " + numeroAleatorioDeColor); 
      } 
     } 
    } 
} 

Il peut être plus facile de mettre toutes les couleurs que vous avez à choisir dans un tableau distinct du début:

static final Color[] todosColores = { Color.BLUE, Color.RED, Color.GREEN, Color.YELLOW, Color.BLACK, Color.ORANGE }; 

Cela est particulièrement vrai si vous avez beaucoup de couleurs à choisir. Maintenant vous pouvez faire juste:

  // number to use for array index; should start from 0, so don’t add 1 
      int numeroAleatorioDeColor = rand.nextInt(todosColores.length); 
      tablero[x][y] = todosColores[numeroAleatorioDeColor];