Array Out Of Range C#

I am new to unity and my code below gives me the error; Array index is out of range. Could someone explain to me why this happens and the possible solutions. Thanks! I could post any other things necessary.

Inspector:
71838-temp.png

Error71839-error.png:

Code:

using UnityEngine;
using System.Collections;

public class SpawnPrefab : MonoBehaviour {

	public GameObject[] enemies;
	public int amount;
	private Vector3 spawnPoint;


	// Use this for initialization
	void Start () {
	
	}
	
	// Update is called once per frame
	void Update () {
		enemies = GameObject.FindGameObjectsWithTag ("Apple");
		amount = enemies.Length;

		if (amount != 3) {
			InvokeRepeating ("spawnEnemy", 5, 10f);	
		}
	}

	void spawnEnemy() {
		spawnPoint.x = Random.Range (9, 6);
		spawnPoint.y = Random.Range (9, 6);

		Instantiate(enemies [UnityEngine.Random.Range(0, enemies.Length - 1)], spawnPoint, Quaternion.identity);
		CancelInvoke ();
	}
}

Try this

if (enemies.Length > 0)
{
    if (enemies.Length == 1)
    {
        Instantiate(enemies [0], spawnPoint, Quaternion.identity);
    }
    else
    {
        // since 0 and enemies.Length are int values then enemies.Length is exclusive meaning you will get a result between 0 and (enemies.Length - 1)
        int index = UnityEngine.Random.Range(0, enemies.Length);
        Instantiate(enemies [index], spawnPoint, Quaternion.identity);
    }
}

I noticed the following in your code sample. At line 20 :

         if (amount != 3) {
             InvokeRepeating ("spawnEnemy", 5, 10f);  

This implies spawnEnemy() is called even when amount is zero, i.e. when there are no enemies. When enemies array is referenced the index is undefined. Perhaps determine if this is the condition required, maybe amount >= 3 for example.