2015-05-01 1 views
1

Wordy вопрос, позвольте привести примерКак произвольно заполнять фиксированное количество столбцов в массиве 2d со значением в java?

Программа, которую я создаю, создает 2D-мир, используя 2D-массив, размер которого основан на пользовательском вводе. В этом примере мир - это мир 4 X 10

---------- 
---------- 
---------- 
---------- 

Как бы разместить 3 Xs в случайных позициях вдоль нижней строки?

т.е.

---------- 
---------- 
---------- 
--x-x---x- 

, но убедившись, что он является случайным, так что они не появляются в той же строке, если я снова запустить метод?

+0

если вы говорите, случайное положение это только в определенной строке или для нескольких подряд? –

+0

Просто в нижнем ряду. Я в конце концов переместим эту строку вверх до пустой строки над ней и произвольно сгенерируют больше Xs в текущей пустой строке – Efie

+0

Можно ли использовать Список? –

ответ

2

Вы можете попробовать это, указав x в индексе 0 , 1 , 2 и перетасовать его с помощью метода структуры коллекций.

String [][] data = {{"-","-","-","-","-","-","-","-"},{"-","-","-","-","-","-","-","-"}}; 

    data[data.length - 1][0] = "x"; 
    data[data.length - 1][1] = "x"; 
    data[data.length - 1][2] = "x"; 

    Collections.shuffle(Arrays.asList(data[data.length - 1])); 
    for(int i = 0; i < data.length; i++){ 
     for(String s : data[i]){ 
      System.out.print(s); 
     } 
     System.out.println(); 
    } 

результаты:

-------- 
--x-xx-- 
1
Scanner scanner = new Scanner(System.in); 
    Random rgen = new Random(); 
    int column = scanner.nextInt(); 
    int row = scanner.nextInt(); 

    List<List<Character>> grid = new LinkedList<>(); 

    for (int i = 0; i < column; i++) { 
     List<Character> aColumn = new LinkedList<>(); 
     for (int j = 0; j < row; j++) { 
      if (rgen.nextBoolean()) { 
       aColumn.add('.'); 
      } else { 
       aColumn.add('x'); 
      } 

     } 
     grid.add(aColumn); 
    } 
+0

Это не соответствует требованию, чтобы в строке было ровно 3 x. –

+0

Стреляй извините:/Должен был прочитать ближе .. Будет пересматривать. –

+0

Это имеет смысл. Спасибо за вклад! – Efie

Смежные вопросы