public class Solution {
public static void main(String[] args) {
String packagePath = "com.javarush.task.pro.task09.task0915";
String[] tokens = getTokens(packagePath, ".a");
System.out.println(Arrays.toString(tokens));
}
public static String[] getTokens(String query, String delimiter) {
//напишите тут ваш код
StringTokenizer tokenizer = new StringTokenizer(query, delimiter);
int i =0;
String[] array = new String[tokenizer.countTokens()];
while (tokenizer.hasMoreTokens())
{
String str = tokenizer.nextToken();
array[i]=str;
++i;
}
return array;
}
}
Добрый день! Вопрос вот по этой задаче. Размер массива назначается через ИМЯ.countTokens(). В лекции к этой задаче данного метода нет. Как вы до него додумались? Может это было в другой лекции? Подскажите где можно это посмотреть. Спасибо!
Cybersmith
28 уровень
.countTokens()
Архивный
детиметоды в классе?" - их придумывает программист, то есть ты. Ты когда описываешь метод, ты сам решаешь, какие он будет делать действия. А аргументы этого метода - это способ передать в этот метод информацию, чтобы он мог ей распоряжаться внутри этого метода. У аргументов нет какого-то одного значения, значение не определено до тех пор, пока этот метод не вызвать. Метод же вообще не выполняется сам по себе просто потому, что он написан. Чтобы он исполнился, его нужно вызвать. А для этого его аргументам нужно передать значения. Это объявление метода: Здесь говорится, что метод под названием getTokens использует у себя два аргумента типа String: String query и String delimiter. Это не значит, что ему нужно передать откуда-то переменные query и delimiter. Это значит, что внутри этого метода объявлены переменные String query и String delimiter, которые будут равны тому, что будет передано в этот метод при вызове. А это вызов метода getTokens. значение переменной packagePath передаётся в качестве значения параметра String query, а значение ".a" будет использоваться в качестве значения String delimiter. Дальше с этими значениями уже производится исполнение тела метода getTokens. Ты не можешь вызвать getTokens без параметров, потому что так написано в сигнатуре этого метода. Если просто написать String[] tokens = getTokens(); то тебе компилятор скажет, что в качестве аргументов нужно передать два значения типа String, иначе не даст запустить программу. Резюме: аргументы объявляются в сигнатуре метода: getTokens(String query. String delimiter), а инициализируются при вызове метода.