умножить строковый элемент на элемент int из двух массивов Java

1

Я изучаю Java и ищу полный код для умножения элементов из 2 массивов, возможно, не импортируя ничего для его достижения.

В Python это довольно просто:

a=['a','b','c','d']
b=[1,2,3,4]
[x*y for x,y in zip(a,b)]
['a', 'bb', 'ccc', 'dddd']

Как я могу достичь того же в Java, когда первый массив представляет собой массив строк, а второй - целые числа?

Теги:
arrays

2 ответа

0

Чтобы создать строку, заполненную несколькими экземплярами одного и того же символа типа "ccc" вы можете создать массив символов, который будет содержать только 3 символа, например

char[] myCharacters = new char[3];

Теперь этот массив заполняется нулями ('\0'), поэтому вам нужно заполнить его желаемым символом 'c'. Вы просто делаете это, используя for цикла

for (int i = 0; i<myCharacters; i++){
    myCharacters[i] = 'c';
}

После этого ваш массив будет содержать ['c', 'c', 'c'].

Теперь вы можете использовать этот массив для создания строки с использованием символов из нее. Для этого вам просто нужно передать этот массив в конструктор String, например

String myString = new String(myCharacters);

И вот ты туда. Теперь у вас есть строка "ccc". Повторите эти шаги для каждой пары элементов из массивов a и b.


Вы также можете использовать более короткую версию, какие виды делают то же самое

String myString = new String(new char[3]).replace('\0','c');//will produce "ccc"
0

Я боюсь, что Java не собирается поддерживать такую вещь изначально, и вам нужно будет выполнить свою собственную логику для ее реализации. Скажем, у вас есть ваша String[].

String[] a = {"a", "b", "c", "d"};

И у вас есть твой int[].

int[] b = {1,2,3,4};

Затем вам нужно проверить, что массивы имеют одинаковый размер.

if(a.length == b.length) {
    // Continue.
}

Затем вам нужно реализовать цикл, чтобы пройти через каждый элемент массива.

for(int x = 0; x < a.length; x++)
{
    // Some looping code.
}

И вы собираетесь захватить каждый предмет.

String value = a[x];

int multiplier = b[x];

Если вы ничего не импортируете, вы объявляете общее значение:

String total = "";

Но если вы разрешаете StringBuilder, вы импортируете его и объявляете.

StringBuilder total = new StringBuilder();

ПРИМЕЧАНИЕ: StringBuilder настоятельно рекомендуется здесь.

И тогда вы multiplier количество циклов.

for(int y = 0; y < multiplier; y++)
{
    // If you use StringBuilder..
    total.append(value);

    // If you don't..
    total += value;
}

// If you use StringBuilder..
a[x] = total.toString();

// If you don't...
a[x] = total;

Это установит значение a[x] в повторяющуюся String.

ПРИМЕЧАНИЕ. То, что также важно, опирается на хорошую практику. Если вы используете Java-код, он считает страшную практику многократным конкатенацией объектов String. StringBuilder более эффективен и является стандартом Java. Я бы настоятельно рекомендовал использовать это.

Получайте удовольствие, собирая все это вместе!

  • 0
    Спасибо, я стараюсь следовать вашим указаниям. Правильно ли я иду с такими циклами, чтобы получить значения? String [] strArr = new String[s]; //array for strings for (int i = 0; i < s; i++) { strArr[i]=strings[i]; }

Ещё вопросы

Сообщество Overcoder
Наверх
Меню