У меня есть ArrayList, который содержит строки размером 1000. Я прохожу через этот ArrayList и нахожу слова и пытаюсь сформировать из них квадрат. Например следующим образом:Уменьшить или увеличить цикл в зависимости от ввода параметра
C A R D
A R E A
R E A R
D A R T
Это работает, но он включает в себя много вложенных циклах и я жесткое кодирование петли в этом случае, когда я стараюсь, чтобы сформировать квадрат 4х4.
Я ищу гибкость для прохождения в квадратном размере, например, 5x5 или 6x6 и т. Д. И, соответственно, петлю. Как я могу это сделать.
Если бы это был всего лишь один цикл, я бы просто прошел в Integer и зациклился в соответствии с этим Integer. Но поскольку я вложен, количество необходимых циклов For будет отличаться таким образом смущенным.
Когда я формирую квадрат 4x4, я заканчиваю цикл 4 раза, когда каждая петля проверяет разные подстроки, чтобы получить правильный квадрат. Когда требуется 5x5, мне понадобится 5 циклов для проверки. Я хочу решить проблему, когда я увеличиваю циклы уменьшения в зависимости от параметра/или пути к циклу, не создавая так много для циклов. Могу ли я получить некоторые рекомендации по этому поводу.
void makeWord(ArrayList<String> arr, int size){ //want to use this size to determine amount of loop
String first, second, third, fourth;
for (int i = 0; i < arr.size(); i++) {
first = arr.get(i);
for (int j = 0; j < arr.size(); j++) {
if(first.substring(1,2).equals(arr.get(j).substring(0,1)) &&
(!first.equals(arr.get(j)))){
second = arr.get(j);
}
else {
second = " ";
}
if (!second.trim().isEmpty()) {
for (int k = 0; k < arr.size(); k++) {
if (first.substring(2, 3).equals(arr.get(k).substring(0, 1)) &&
second.substring(2, 3).equals(arr.get(k).substring(1, 2)) &&
(!first.equals(arr.get(k)) && (!second.equals(arr.get(k))))) {
third = arr.get(k);
} else {
third = " ";
}
}
}
}
}
}
Не знаю, как вложении для петель предотвратить вас от прохождения целого числа. Может быть, попытайтесь убрать ненужные детали и сосредоточьте свой вопрос на том, что именно вы связываете, чтобы выполнить логику. –
@ArtemioRamirez Отредактировал вопрос. Удаление выполняемых проверок только начнет задавать дополнительные вопросы о том, в чем суть этих циклов. – ksv99
Препятствуйте проблеме вверх; один способ найти слова, другой - показать их. –