Подсчет переданных аргументов методу

#java #arrays

#java #массивы

Вопрос:

есть ли в java возможность подсчитать количество переданных аргументов в метод?

Получилось что-то вроде этого:

 public class practise7 {

public static void main(String[] args) {

        int[] array3 = new int[]{1};
        int[] array4 = new int[]{1, 3, 4};
        int[] array5 = new int[]{2, 3,};

        combine(array3, array4, array5);
        
    }
   
    public static void combine(int[] array3, int[] array4, int[] array5) {
        //Here i need the number of passed arguments (here 3 e.g.)

        int count = args.length; //found this on google but didn't worked
        System.out.println(count);
        
    }
}
  

Большое спасибо!

Ответ №1:

Попробуйте это. Он использует синтаксис var …arg .

 public static void main(String[] args) {

        int[] array3 = new int[]{1};
        int[] array4 = new int[]{1, 3, 4};
        int[] array5 = new int[]{2, 3,};

        combine(array3, array4, array5);
        
    }
   // uses the variable arguments syntax
    public static void combine(int[]...v) {
        //Here i need the number of passed arguments (here 3 e.g.)

        int count = v.length; 
        System.out.println(count);

        for (int[] k : v) {
          System.out.println(Arrays.toString(k));
        }
    }
}
  

С принтами

 3
[1]
[1, 3, 4]
[2, 3]
  

Обратите внимание, что объединение массивов и не массивов в списке аргументов иногда может привести к неожиданным результатам. Аргумент синтаксиса переменной должен быть последним в подписи.

Комментарии:

1. Сработало — большое спасибо!

Ответ №2:

Ваше решение не работает, потому что с ‘аргументами.длина’ вы можете получить только количество аргументов, которые были переданы в основной функции. Вы можете использовать функцию Java с переменными аргументами следующим образом:

 public static void combine(int[] ... arrays) 
{
        int count = arrays.length;
        System.out.println(count);
}