Могу ли я умножить строки на Java для повторения последовательностей?
У меня есть что-то вроде следующего:
Так что я мог бы просто пойти:
или что-то подобное?
Где, в этом случае, моим окончательным результатом будет:
ОТВЕТЫ
Ответ 1
Замените генерацию числом повторений и «-» на строку (или char), которую вы хотите повторить.
Все это создает пустую строку, содержащую n чисел из 0x00 символов, а встроенный метод замены String # делает остальные.
Здесь образец для копирования и вставки:
Ответ 2
Нет, но вы можете в Scala! (И затем скомпилируйте это и запустите его, используя любую реализацию Java. )
Теперь, если вы хотите сделать это простым способом в java, используйте пакет Apost commons-lang. Предполагая, что вы используете maven, добавьте эту зависимость в свой pom.xml:
И затем используйте StringUtils.repeat следующим образом:
Ответ 3
Google Guava предоставляет другой способ сделать это с помощью Strings#repeat() :
Ответ 4
Приходят в голову два способа:
Способ 2 может быть сокращен до:
Ответ 5
Если вы повторяете одиночные символы, такие как OP, и максимальное количество повторений не слишком велико, вы можете использовать простую операцию подстроки, например:
Ответ 6
Нет. У Java нет этой функции. Вам нужно будет создать свою строку, используя StringBuilder и какой-то цикл.
Ответ 7
Java 8 предоставляет способ (хотя и немного неуклюжий). В качестве метода:
или менее эффективный, но лучше выглядящий IMHO:
Ответ 8
Ответ 9
Простой способ сделать это.
Ответ 10
Ответ 11
Я не верю, что Java изначально предоставляет эту функцию, хотя было бы неплохо. Иногда я пишу код Perl, а оператор x в Perl очень удобен для повторения строк!
Ответ 12
Нет, вы не можете. Однако вы можете использовать эту функцию для повторения символа.
Отказ от ответственности: я набрал его здесь. Возможны ошибки.
Ответ 13
Обобщение ответа Дейва Хартнолла (я в основном принимаю концепцию ad absurdum, возможно, не использую это ни в чем, где вам нужна скорость). Это позволяет заполнить строку с символами я после заданного шаблона.
Если вам не нужен шаблон, а просто какой-либо один символ, вы можете использовать его (это немного быстрее):
Ответ 14
Подобно тому, что уже было сказано:
Вход multStuff(«123», «0», 3);
Ответ 15
Я создал метод, который делает то же самое, что вы хотите, не стесняйтесь попробовать следующее:
Ответ 16
мы можем создавать многострочные строки, используя * в python, но не в java, которые вы можете использовать для цикла в вашем случае:
Ответ 17
Там нет ярлыка для этого в Java, как пример, который вы дали в Python.
[Перевод] 10 самых задаваемых вопросов о строках в Java
Здесь упомянуты 10 самых задаваемых вопросов о строках в Java
Также было бы неплохо знать концепцию пула строк.
Почему char[] предпочтительнее строк ( String ) для защиты конфиденциальной информации?
Строки неизменяемы. Это значит, что однажды созданная строка не будет изменяться до непосредственного запуска механизма сборщика мусора. В случае с массивом совершенно очевидно, что мы можем изменять его элементы. Таким образом, конфиденциальная информация (например, пароль) не будет храниться в открытом виде в любом месте программы.
Можем ли мы передавать строки в качестве параметра при использовании оператора switch?
Да, начиная с 7-ой версии JDK. Ранее в 6-ой версии, такой возможности не было.
Как конвертировать строку в целочисленное значение?
Аналогично и для остальных примитивных типов Java.
Как разделить строку на строки с разделителем-пробелом?
Проще всего использовать регулярные выражения. » \s » выступает как заменитель пробельных символов, таких как » «, » \t «, » \r «, » \n «.
В JDK 6, метод substring() показывал часть символов из существующей строки, но не создавал отдельного экземпляра строки. Чтобы создать новую строку, представленную в виде массива символов можно добавить какую-нибудь пустую строку, например, так:
В результате мы получаем массив символов, являющийся нашей новой строкой. Такой подход иногда может сократить время выполнения кода, потому что сборщик мусора может уничтожить неиспользуемые большие строки и хранить только подстроки.
В Oracle JDK 7, метод substring() создаёт новый массив символов, не используя уже существующий. Вы также можете взглянуть на диаграмму, представляющую разницу методов substring() в JDK 6 и JDK 7.
String против StringBuilder против StringBuffer
String против StringBuilder : StringBuilder изменяем, это значит, что мы можем изменить его содержание после создания объекта.
Как повторить строку несколько раз?
В Python, мы можем просто умножить строку на число n и, тогда, она будет повторяться n раз. В Java, мы можем использовать метод repeat() из класса StringUtils библиотеки Apache Commons Lang.
Как конвертировать строку в дату?
Как посчитать количество вхождений определённого символа в строке?
Используйте класс StringUtils из библиотеки Apache Commons Lang.
Арифметические операции
Ранее мы с вами говорили как можно объявлять переменные. На этом занятии рассмотрим арифметические операции в Java. Они следующие:
остаток от деления
операция инкремента (увеличение на 1)
операция декремента (уменьшение на 1)
Начнем со сложения и допустим необходимо вычислить сумму двух переменных:
то есть складывать можно как переменные, так и числа или их комбинации:
Вычитание выполняется аналогично, например:
При умножении все делается аналогично. Допустим, мы хотим умножить переменную a на 3. Это делается, например, так:
в результате переменная b будет примерно равна 25.8. А если сделать так:
то целочисленная переменная c будет равна 25.
Теперь давайте напишем простую программу вычисления периметра прямоугольника со сторонами a и b. Формула периметра имеет вид:
Зададим две вещественные переменные a и b:
позволим пользователю ввести их значения:
и выведем результат на экран:
Запустим и посмотрим как это работает. Обратите внимание, здесь мы при вычислении периметра использовали круглые скобки, которые говорят о том, что сначала должно выполняется сложение, а только потом – умножение. То есть, круглые скобки меняют приоритет арифметических операций и все, что в них записано вычисляется в первую очередь так, как и принято в математике.
Теперь операция деления. Например, можно записать:
Здесь вещественная переменная c будет равна 3.5. Однако, эта операция имеет один важный нюанс. Смотрите, если переписать программу во так:
то переменная c будет равна уже не 3.5, а 3. Почему так получилось? Дело в том, что здесь в делении участвуют две целочисленные переменные, поэтому когда выполняется их деление, то результат 7/2=3,5 сначала временно сохраняется в целочисленной ячейке памяти, то есть, туда помещается значение 3 и только потом это значение присваивается вещественной переменной c. Вот так это все работает. Но если хотя бы одна из двух переменных a или b будет вещественной, то результат деления сохраняется уже в вещественной ячейке памяти, и затем, присваивается переменной c. Поэтому в первом случае было 3,5, а во втором 3. Запомните этот момент! Здесь многие начинающие программисты совершают ошибку.
Как же разделить две целочисленные переменные, чтобы получить верный математический результат 3,5? Для этого достаточно одну из них привести к вещественному типу, например, так:
в обоих случаях результат будет 3,5. Если же выполняется деление конкретных чисел, то можно записать их следующим образом:
Здесь во втором случае число 7.0 воспринимается как вещественное, поэтому и результат 3,5. Вот так работает деление в Java.
Следующая арифметическая операция вычисления остатка от деления двух целочисленных величин записывается так:
В результате переменная ost будет равна 1, так как 3 входит в 10 ровно 3 раза и остается еще 1. Это и есть остаток от деления. Данная операция выполняется только с целочисленными переменными или целыми числами, то есть, вещественные значения записывать сюда нельзя.
Результат эквивалентен записи вида:
Но первый вариант проще в записи и быстрее выполняется, так как компилятор его преобразует в более «быстрый» байт-код.
Вторая операция декремента, наоборот, уменьшает значение переменной на 1:
В результате arg будет равен 4. Обратите внимание, что обе эти операции можно записать и в таком виде:
В данном случае результаты их работы будут идентичны. Но различия здесь все же есть. Продемонстрируем их на таком примере.
В результате a=10, b=11, и c=d=11. Почему здесь a=10? Смотрите, когда используется постпрефиксная запись оператора инкремента, то сначала выполняется операция присваивания и только потом увеличение c на 1. В префиксной же записи, сначала d увеличивается на 1, а потом полученное значение присваивается переменной b. Отсюда и различия в значениях переменных a и b.
В заключение занятия посмотрите еще на вот такие операции:
Разумеется, числа здесь можно ставить самые разные или же использовать переменные.
Вот так реализуются арифметические операции в Java. По итогам этого занятия вы должны знать как работает оператор присваивания и как выполняются арифметические операции.
Видео по теме
#1 Установка пакетов и первый запуск программы
#2 Структура программы, переменные, константы, оператор присваивания
В уроке 8 мы затронули логические операторы, они нам были необходимы для формирования логического выражения в условиях if. Этот урок будет посвящен математике в Java, и поэтому мы рассмотрим подробнее арифметические операторы и частично возможности класса Math.
Но для начала, выясним, что же такое операторы. Операторы это специальные символы, отвечающие за ту или иную операцию, например сложение, умножение, сравнение. Все операторы в Java можно разбить на 4 класса — арифметические, битовые, операторы сравнения и логические.
Арифметические операторы в Java
Для стандартных арифметических операций, таких как сложение, вычитание, умножение, деление в Java используются традиционные символы, к которым мы привыкли со школы:
В Java также имеется специальный оператор %, обозначающий остаток от делния.
Пример использования: дан массив целых чисел, вывести на консоль только те числа, которые делятся на 3.
Операции с присваиванием
Рассмотрим задачу вывода на экран 10 первых четных чисел чисел
мы можем записать сокращенно
+= это оператор сложения с присваиванием. Подобные операторы есть для всех основных 5 операций, рассмотренных выше
Пример использования: Найти факториал числа 7.
Инкрементирование и декрементирование
Инкремент, обозначается ++ и увеличивает значение переменной на единицу. Декремент обозначается — и уменьшает значение на единицу. С инкрементом и декрементом мы часто встречаемся в цикле for.
Инкремент и декремент бывают двух форм
Различие префиксной и постфиксной формы проявляется только тогда, когда эти операции присутствуют в выражениях. Если форма префиксная, то сначала произойдет увеличение (или уменьшение) переменной на единицу, а потом с новым значением будет произведены дальнейшие вычисления. Если форма постфиксная, то расчет выражения будет происходить со старым значением переменной, а переменная увеличится (или уменьшится) на единицу после вычисления выражения. Пример
В первом случае сначала переменная a увеличится на 1, потом произойдет вычисление всего выражения. Во втором случае произойдет вычисление выражения при старом значении b = 3, и после вычисления b увеличится на 1, на результат в postfix это уже не повлияет.
Если вы поняли принцип работы постфиксного и префиксного инкремента/декремента, то предлагаю решить в уме такую задачу:
Вопрос: чему в итоге равны x и y? После того, как вы сделали предположение, проверьте его в java.
Задача со зведочкой. Дан код:
Какие числа будут выведены на экран? Почему? Разобраться самостоятельно.
Примечание: инкремент и декремент применяются только к переменной. Выражение вида 7++ считается недопустимым.
Математические функции и константы (класс Math)
Как умножить строку java
Соединение строк
Для соединения строк можно использовать операцию сложения («+»):
При этом если в операции сложения строк используется нестроковый объект, например, число, то этот объект преобразуется к строке:
Фактически же при сложении строк с нестроковыми объектами будет вызываться метод valueOf() класса String. Данный метод имеет множество перегрузок и преобразует практически все типы данных к строке. Для преобразования объектов различных классов метод valueOf вызывает метод toString() этих классов.
Другой способ объединения строк представляет метод concat() :
Метод concat() принимает строку, с которой надо объединить вызывающую строку, и возвращает соединенную строку.
Извлечение символов и подстрок
Как и в массивах индексация начинается с нуля.
srcBegin : индекс в строке, с которого начинается извлечение символов
srcEnd : индекс в строке, до которого идет извлечение символов
dst : массив символов, в который будут извлекаться символы
dstBegin : индекс в массиве dst, с которого надо добавлять извлеченные из строки символы
Сравнение строк
Для сравнения строк используются методы equals() (с учетом регистра) и equalsIgnoreCase() (без учета регистра). Оба метода в качестве параметра принимают строку, с которой надо сравнить:
Еще один специальный метод regionMatches() сравнивает отдельные подстроки в рамках двух строк. Он имеет следующие формы:
Метод принимает следующие параметры:
toffset : начальный индекс в вызывающей строке, с которого начнется сравнение
other : строка, с которой сравнивается вызывающая
oofset : начальный индекс в сравниваемой строке, с которого начнется сравнение
len : количество сравниваемых символов в обеих строках
И еще одна пара методов int compareTo(String str) и int compareToIgnoreCase(String str) также позволяют сравнить две строки, но при этом они также позволяют узнать больше ли одна строка, чем другая или нет. Если возвращаемое значение больше 0, то первая строка больше второй, если меньше нуля, то, наоборот, вторая больше первой. Если строки равны, то возвращается 0.
Для определения больше или меньше одна строка, чем другая, используется лексикографический порядок. То есть, например, строка «A» меньше, чем строка «B», так как символ ‘A’ в алфавите стоит перед символом ‘B’. Если первые символы строк равны, то в расчет берутся следующие символы. Например:
Поиск в строке
Метод startsWith() позволяют определить начинается ли строка с определенной подстроки, а метод endsWith() позволяет определить заканчивается строка на определенную подстроку:
Замена в строке
Метод replace() позволяет заменить в строке одну последовательность символов на другую:
Обрезка строки
Метод trim() позволяет удалить начальные и конечные пробелы:
Метод substring() возвращает подстроку, начиная с определенного индекса до конца или до определенного индекса:
Изменение регистра
Split
В данном случае строка будет разделяться по пробелу. Консольный вывод: