# Even or Odd Array Sum in Java

## The challenge

Given a list of numbers, determine whether the sum of its elements is odd or even.

Give your answer as a string matching `"odd"` or `"even"`.

If the input array is empty consider it as: `[0]` (array with a zero).

### Example:

``````odd_or_even([0])          ==  "even"
odd_or_even([0, 1, 4])    ==  "odd"
odd_or_even([0, -1, -5])  ==  "even"
``````

## The solution in Java code

Option 1 (using `streams`):

``````public class Solution {
public static String oddOrEven (int[] array) {
return (java.util.Arrays.stream(array).sum()%2==0)
? "even" : "odd";
}
}
``````

Option 2 (using `forloop`):

``````public class Solution {
public static String oddOrEven (int[] array) {
int sum = 0;
for (int n : array){
sum += n;
}
return sum%2==0 ? "even" : "odd";
}
}
``````

Option 3 (using `xor`):

``````public class Solution {
public static String oddOrEven (int[] array) {
int xor = 0;
for (int i : array){
xor ^= i;
}
return (xor & 1) == 1 ? "odd" : "even";
}
}
``````

## Test cases to validate our solution

``````import org.junit.Test;
import static org.junit.Assert.assertEquals;
import org.junit.runners.JUnit4;
import java.util.*;
import java.util.stream.IntStream;

public class SolutionTest {
@Test
public void test1() {
assertEquals("odd", Solution.oddOrEven(new int[] {2, 5, 34, 6}));
assertEquals("odd", Solution.oddOrEven(new int[] {0, 1, 2}));
assertEquals("even", Solution.oddOrEven(new int[] {0, 1, 3}));
assertEquals("even", Solution.oddOrEven(new int[] {1023, 1, 2}));
}

@Test
public void randomTests() {
Random r = new Random();
for(int j = 1; j <= 200; j++) {
int length = 1+r.nextInt(10);
int[] array = new int[length];
for(int i = 0; i < array.length; i++) {
int random_number = 1+r.nextInt(2000);
array[i] = random_number;
}

assertEquals(this.n(array), Solution.oddOrEven(array));
}
}
}
``````