Java: Аргументы, переменные и инструкции
Новички иногда пытаются сделать примерно такое определение функции:
static void showDate("Today is: December 5") {
// какой-нибудь код
}
Запустить код не получится — он содержит синтаксическую ошибку. Вместо переменной в аргументе написана строка, то есть значение.
Аргумент должен быть переменной, иначе он не сможет быть аргументом, то есть чем-то, что принимает значение при вызове.
Если же вам нужна какая-то информация в функции, и вы заранее знаете, какая именно, то аргумент для этого не нужен, ведь мы уже умеем сохранять значения для последующего использования — достаточно создать переменную в самом теле:
public static void showDate() {
var text = "Today is: December 5";
// какой-нибудь код
}
Обратите внимание: после определения функции (после закрывающей фигурной скобки) мы не ставим ;
.
Символ ;
ставится в конце выражений. Определение функции — не выражение, а инструкция. Соответственно, мы не можем его использовать в составе других выражений и ему не нужна ;
в конце.
Понятие «создать функцию» имеет много синонимов: «реализовать», «определить» и даже «заимплементить» (от слова "implement"). Все они встречаются в повседневной практике на работе.
Задание
Сэм составляет множество карт, и ему часто нужно выводить на экран повторяющиеся символы для визуализации маршрутов. Например, так Сэм иллюстрирует узкие дороги между городами:
Meereen =-=-=-=- Myr
А так иллюстрирует широкие трассы:
Vaes Dothrak ======== Vahar
Сэм где-то нашёл функцию repeat()
из класса Functions
. Она принимает два аргумента: какое-то число N и строку, и возвращает повторенную N раз строку. Вот как он использует её:
System.out.println(Functions.repeat("=-", 4));
=-=-=-=-
Сэм не очень доволен. Неудобно вызывать сотни раз repeat()
внутри вызова System.out.println()
.
Напишите для Сэма функцию printSeq()
, которая сама выводит на экран получившиеся повторения. Она принимает два аргумента — строку и число, и выводит повторяющуюся строку на экран. Для генерации строки используйте repeat()
.
Вот пример того, как Сэм будет использовать написанную вами printSeq()
:
App.printSeq("=-", 4);
=-=-=-=-
Как обычно, функцию нужно сделать public static
, а не просто static
, чтобы мы смогли вызвать ее из другого класса.
Советы
Чтобы указать в аргументах функции printSeq() целое число, используйте тип данных
int
.