java — генерирует список имен или слов и выводит их в группы

Я хочу взять список слов или имен и вывести их в группы в определенном порядке через php или Java, но не знаю, как это сделать. Я приведу пример с заказом: (Чтобы уточнить, это не домашняя работа. Я делаю это для турнира, который я провожу, и было бы легко генерировать семена во время мероприятия)

Количество имен: 12
Размер групп: 3

  • Хильде Франкум
  • Эрли Апхофф
  • Богатый лаклер
  • Висента Баскин
  • Герминия Лакин
  • Хермелинда Хостеттер
  • Бернис Сильва
  • Блоссом Несби
  • Лашон Кван
  • Эстер Фаррай
  • Тана Ольгин
  • Памула Давин

Выход:

Группа 1:
Хильде Франкум
Герминия Лакин
Лашон Кван

Группа 2:
Эрли Апхофф
Хермелинда Хостеттер
Эстер Фаррай

Группа 3:
Богатый лаклер
Бернис Сильва
Тана Ольгин

Группа 4:
Висента Баскин
Блоссом Несби
Памула Давин

Список занимает имя в следующей строке и вставляет его в новую группу в том порядке, в котором он указан, пока не останется больше групп, а затем перезапускается до тех пор, пока не останется ни одного имени.

0

Решение

Пример кода PFB. Я создал класс Group, который содержит группу (массив объектов String). ArrayList, который содержит случайное количество объектов группы.

Программа динамическая на основе входных имен и размера групп:

import java.util.ArrayList;
import java.util.List;

public class Group {
String group[];

public Group(int groupSize) {
this.group = new String[groupSize];
}

@Override
public String toString() {

StringBuilder strBuilder = new StringBuilder();

for (int i = 0; i < group.length; i++) {

if (i != 0)
strBuilder.append(", ");

strBuilder.append(group[i]);
}
return strBuilder.toString();
}

public static void main(String[] args) {
String[] inputArray = { "Hilde Frankum", "Earlie Uphoff",
"Rich Laclair", "Vicenta Baskin", "Herminia Lakin",
"Hermelinda Hostetter", "Bernice Sylva", "Blossom Nesby",
"Lashon Kwan", "Esther Farraj", "Tana Olguin", "Pamula Davin" };

int numGroups = 4;

createGroup(inputArray, numGroups);
}

public static void createGroup(String inputArray[], int numGroups) {

int groupSize = inputArray.length / numGroups;

List<Group> lists = new ArrayList<Group>();

for (int i = 0; i < numGroups; i++)
lists.add(new Group(groupSize));

for (int i = 0, x = 0; i < groupSize; i++)
for (int j = 0; j < numGroups; j++)
lists.get(j).group[i] = inputArray[x++];

for (Group groups : lists)
System.out.println(groups.toString());
}
}
0

Другие решения

Вот метод Java, который должен это сделать.

String[][] groupThem(ArrayList<String> /*could be an array without many changes*/ things, int sizeOfGroups){
int qtyOfThings = things.size();
int qtyOfGroups = qtyOfThings / sizeOfGroups;
String[][] groups = new String[qtyOfGroups][sizeOfGroups];

int counter = 0;
while(counter < qtyOfThings){
groups[counter%qtyOfGroups][counter%sizeOfGroups] = things.get(counter);
counter++;
}
return groups;
}
0

$arrayOfNames = array(
'Hilde Frankum',
'Earlie Uphoff',
'Rich Laclair',
'Vicenta Baskin',
'Herminia Lakin',
'Hermelinda Hostetter',
'Bernice Sylva',
'Blossom Nesby',
'Lashon Kwan',
'Esther Farraj',
'Tana Olguin',
'Pamula Davin'
);

sort($arrayOfNames);

$ar = array_chunk($arrayOfNames, 3);

foreach($ar as $key => $groups){
echo "Group #" . ($key + 1) .' '. implode(' ',$groups) . "\n";
}
0