- A+

I would like to write a program in Java which, given an array, finds the sum of all the numbers in the array - with an exception! Since the number 13 is very unlucky, I propose that we shall completely exclude the number 13, and the number directly after 13, if it exists, from the total sum.

The program, which I shall call `sum13`

, should produce the following results from the following inputs (these are just a few examples):

`sum13([1,2,2,1]) = 6`

This one is normal; no 13's here.

`sum13([5, 13, 2]) = 5`

The 13 and the number directly after the 13 are excluded.

`sum13([13, 13]) = 0`

The array contains only 13's, so neither of them are included.

`sum13([1, 2, 13, 2, 1, 13]) = 4`

A slightly longer example of the expected output.

Here is the code which I came up with for `sum13`

:

`public int sum13(int[] nums) { int sum = 0; for (int i = 0; i < nums.length; i++) { // we start by adding all the non-13s to the sum if (nums[i] != 13) sum += nums[i]; } // now we go back and remove all the non-13s directly after a 13 for (int j = 0; j < nums.length; j++) { // the outermost loop checks if the numbers are a 13 if (nums[j] == 13 && j < nums.length - 1) { for (int k = j + 1; k < nums.length; k++) { // this loop checks that the number after the 13 is not a 13 if (nums[k] != 13) { sum -= nums[k]; break; } } } } return sum; } `

The program above works, although it does look quite messy!

Is there a better way of writing such a program that doesn't include multiple loops and nested `if`

s?

Well, you use i as iterator. just make `i++`

when the current number is 13. This way, not only you don't add 13 to the sum but you also skip the next value.

`public int sum13(int[] nums) { int sum = 0; for (int i = 0; i < nums.length; i++) { // we start by adding all the non-13s to the sum if (nums[i] != 13){ sum += nums[i]; } else { i++; } } return sum; } `