Почему массив arrayC
запоминает только по одному элементу из каждого массива?
Я планировал перемешать 2 строки.
public static void mixString(String a, String b) {
String[] arrayA = a.split("");
String[] arrayB = b.split("");
String[] arrayC = new String[a.length() + b.length()];
for (int i = 0; i < arrayC.length - 1; i++) {
getTurn();
if (f) {
for (int j = 0; j < arrayA.length; j++)
arrayC[i] = arrayA[j];
}
else {
for (int x = 0; x < arrayB.length; x++)
arrayC[i] = arrayB[x];
}
}
}
public static boolean getTurn() {
f = !f;
return f;
}
public static void mixString(String a, String b) {
char[] arrayC = new char[a.length() + b.length()];
int idxA = 0;
int idxB = 0;
for (int i = 0; i < arrayC.length; i++) {
if (idxB >= b.length() || (idxA < a.length() && getTurn()))
arrayC[i] = a.charAt(idxA++);
else
arrayC[i] = b.charAt(idxB++);
}
}
Разбивать строку на массив строк с помощью split
для работы с конкретными символами строки является весьма неоптимальным вариантом. Для этого в классе String
существует метод charAt(int index).
Для работы с набором символов в данном случае лучше воспользоваться массивом символов char[]
, а не массивом строк String[]
, состоящих из одного символа.
Для создания строки из массива символов существует метод String.valueOf(char[] data).
В итоге получается такой код:
public static String mixString(String a, String b)
{
char[] resultChars = new char[a.length() + b.length()];
for (int i = 0; i < resultChars.length; i++)
{
resultChars[i] = (i % 2 == 0) ? a.charAt(i / 2) : b.charAt(i / 2);
}
return String.valueOf(resultChars);
}
Написав
for (int j = 0; j<arrayA.length; j++)
arrayC[i] = arrayA[j];
происходит выполнение цикла количество раз равное arrayA.length
. При этом каждый элемент из массива arrayA
кладется постоянно в одну и ту же ячейку arrayC[i]
. В итоге когда цикл заканчивается в ячейке оказывается лишь последний элемент массива. И так постоянно.
Аналогично и с arrayB
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Пишу бот для Telegram, встал вопрос определения геолокации по IPКак я понял на Java это реализуется только с помощью запроса к какому либо серверу,...
Есть сайт, в нём есть iframe, в который подгружается другой сайтХочется подсветить BODY зелёным, когда в iframe полностью загрузился другой сайт,...