2014-10-21 1 views
1

Что я хочу сделать, это присвоить номер (например, 2) двум случайным пятнам в массиве. Вот как я настраиваю свой массив.Как добавить определенное значение в случайный блок в 2D-массиве?

public static void print_array(int[][] array) { 
    for (int row = 0; row < array.length; row++) { 
     System.out.print("\n-----------------\n" + 
         "| "); 
     for (int col = 0; col < array[row].length; col++) { 
      if (col != array[row].length) { 
       System.out.print(array[row][col] + "| "); 
      if (col == array[row].length) { 
       System.out.print("\n"); 
       } 
      } 
     } 
    } 
    System.out.print("\n-----------------"); 
} 

Затем я вызываю print_array в основном методе отображения массива. Затем добавить номер мне нужно использовать этот метод:

public static void placeBlock(int[][] array) { 
} 

Как я могу поместить целое число в случайном месте в массиве?

+0

проверить мой ответ надеюсь, что это то, что вы хотите. – Rustam

ответ

2

Вы можете использовать оператор modulo. Этот оператор возвращает остаток. Например.

2 % 3 returns 2 (It is lesser that 3 the second operand) 
3 % 3 returns 0 (It is lesser that 3 the second operand) 
3 % 2 returns 1 (It is lesser that 2 the second operand) 

Если у вас есть 2 случайных чисел num1 и num2 & вы знаете, что размерность вас 2D массив является MxN. Это M строк и N столбцов. Так что, когда вы делаете

num1 % M returns a number between 0...M 
num2 % N returns a number between 0...N 

Это позволяет сделать:

array[num1%M][num2%N]=2; 

Редактировать согласно комментарий: Если вы генерации случайных чисел, то:

Random randomGenerator=new Random(); 
int num1 = randomGenerator.nextInt(array.length); 
int num2 = randomGenerator.nextInt(array[0].length); 

В в этом случае вы получаете случайное число в соответствии с длиной, чтобы вы могли использовать его напрямую

array[num1][num2]=2; 
+0

Это может помочь объяснить, как получить два случайных числа. :П. –

+0

@ Zéychin Я оставил это для OP, потому что это может быть выход какой-то другой функции. Но он делает редактирование в соответствии с вашим комментарием! – StackFlowed

1

вы можете попробовать это:

public class Test { 

    /** 
    * @param args 
    */ 
    public static void main(String[] args) { 

     int[][]array={{3,4,5},{1,8,3},{33,7,5}}; 
     print_array(array); 
     placeBlock(array,2); 
     print_array(array); 


    } 
    public static void placeBlock(int[][] array,int value) { 
     Random rand=new Random(); 
     int randRow=rand.nextInt(array.length); 
     int randCol=rand.nextInt(array[0].length); 
     array[randRow][randCol]=value; 
    } 
    public static void print_array(int[][] array) { 
     for (int row = 0; row < array.length; row++) { 
      System.out.print("\n-----------------\n" + 
          "| "); 
      for (int col = 0; col < array[row].length; col++) { 
       if (col != array[row].length) { 
        System.out.print(array[row][col] + "| "); 
       if (col == array[row].length) { 
        System.out.print("\n"); 
        } 
       } 
      } 
     } 
     System.out.print("\n-----------------"); 
    } 

} 
+0

Большое вам спасибо, но он печатается только в [0] [2] и [2] [3]. –

+0

Я так не думаю. просто запустите 4-5 раз и проверьте – Rustam

+0

У меня было семя, установленное в '1', а не просто« Random() ». Он отлично работает. Благодаря! –