TheAlgorithms/C-Sharp · error

Coins array cannot be empty

Error message

Coins array cannot be empty {nameof(coinsAsArray)}.

What it means

ValidateCoinsArray is a private validation helper invoked by GenerateSingleCoinChanges; it throws InvalidOperationException when the coins array is empty because a change-making system without denominations cannot produce any amount. The faulting input is the empty coins array.

Solutions

  1. Pass a non-empty denominations array containing at least the coin of value 1, which this solver also requires.
  2. Guard the call site: check coinsArray.Length > 0 before invoking GenerateSingleCoinChanges and surface a clear message instead.
  3. Fix the upstream deserialization/conversion that produced an empty coin set.

When it happens

Trigger: Thrown at Algorithms/Problems/DynamicProgramming/CoinChange/DynamicCoinChangeSolver.cs:144 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of TheAlgorithms/C-Sharp@96e2905cab (2026-09-13). Data as JSON: /api/errors/e88f0e48e110d4e1. Report an issue: GitHub.

Appendix: source

Thrown at Algorithms/Problems/DynamicProgramming/CoinChange/DynamicCoinChangeSolver.cs:144

        return result;
    }

    private static void ValidateCoin(int coin)
    {
        if (coin <= 0)
        {
            throw new InvalidOperationException($"The coin cannot be lesser or equal to zero {nameof(coin)}.");
        }
    }

    private static void ValidateCoinsArray(int[] coinsArray)
    {
        var coinsAsArray = coinsArray.ToArray();

        if (coinsAsArray.Length == 0)
        {
            throw new InvalidOperationException($"Coins array cannot be empty {nameof(coinsAsArray)}.");
        }

        var coinsContainOne = coinsAsArray.Any(x => x == 1);

        if (!coinsContainOne)
        {
            throw new InvalidOperationException($"Coins array must contain coin 1 {nameof(coinsAsArray)}.");
        }

        var containsNonPositive = coinsAsArray.Any(x => x <= 0);

        if (containsNonPositive)
        {
            throw new InvalidOperationException(
                $"{nameof(coinsAsArray)} cannot contain numbers less than or equal to zero");
        }

        var containsDuplicates = coinsAsArray.GroupBy(x => x).Any(g => g.Count() > 1);

View on GitHub (pinned to 96e2905cab)