При вызове метода можно передавать переменное количество аргументов – vararg (сокращение от variable-length arguments – список аргументов переменной длины). Метод, который принимает переменное количество аргументов, называют методом с переменным количеством аргументов. Такие методы удобны тогда, когда количество аргументов заранее не известно.
Для указания списка аргументов переменной длины используют три точки (...). Например, вот так бы выглядел заголовок метода с переменным количеством аргументов для расчета среднего арифметического целых аргументов:
static double average (int... v) {}
Эта синтаксическая конструкция указывает компилятору, что метод average() может вызываться без аргументов или с несколькими аргументами. Параметр v неявно объявляется как массив типа int[]. Таким образом, внутри метода average() доступ к параметру v осуществляется с использованием синтаксиса обычного массива.
Задача 5.2. Опишите метод с переменным количеством аргументом, вычисляющий среднее арифметическое значение целых аргументов.
|
|
Объяснение: в методе main() метод average() вызывается с различным количеством аргументов, в том числе и вовсе без аргументов. Аргументы автоматически помещаются в массив и передаются параметру v. В случае отсутствия аргументов длина массива равна нулю. Поэтому в этом случае при нахождении среднего арифметического значения возвращается значение NaN – не число.
class MyClass {
static double average (int...v)
{ double s=0;
for(int x: v) s+=x;
return s/v.length;
}
public static void main(String args[])
{
System.out.printf("Без аргументов:s=%5.2f%n",average());
System.out.printf("C аргументом 10:s=%5.2f%n",average(10));
System.out.printf("C аргументами 10,20,30:s=%5.2f%n",
average(10,20,30));
}}