The challenge
Count how many arguments a method is called with.
Examples
args_count(1, 2, 3) -> 3
args_count(1, 2, 3, 10) -> 4
The solution in Java code
Some languages refer to this as the spread operator
. In Java, this is called a VarArg
, which means a Variable Amount of Arguments.
Simply prepend the argument’s name with three dots (...
) and then refer to it like an array of elements.
class Arguments {
public static int countArgs(Object... args) {
return args.length;
}
}
Alternatively, you could also use a stream
on it:
import java.util.Arrays;
class Arguments {
public static int countArgs(Object... args) {
return (int) Arrays.stream(args).count();
}
}
Or loop through it using a for loop
:
class Arguments {
public static int countArgs(Object... args) {
int total = 0;
for (int i = 0; i < args.length; ++i) {
total++;
}
return total;
}
}
Test cases to validate our solution
VarArgs
can hold multiple variable types, as illustrated in some of our test cases below.
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
import java.math.BigInteger;
public class SolutionTest {
@Test
public void sampleTest() {
assertEquals(3, Arguments.countArgs(1, 2, 3));
assertEquals(3, Arguments.countArgs(1, 2, "uhsaf uas"));
assertEquals(1, Arguments.countArgs(1));
assertEquals(4, Arguments.countArgs('a', 865, "asfhgajsf", new BigInteger("123456")));
assertEquals(0, Arguments.countArgs());
}
}