ArgumentOutOfRangeException: Index is less than 0 or more than or equal to the list count.

hi i keep getting this error can anybody tell me why ?

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
public class TextController : MonoBehaviour {

	// Use this for initialization
	public Text text;
	public Text invi;
	public ArrayList invertory = new ArrayList();
	private enum States {start, celle, seng_0, seng_1, spejl, dør,gang}
	private States myState;
	void Startgame()
	{
		myState = States.start;
		text.text = "Du er i din fængsel celle du er blevet sat der ind af det korrupte system nu er det op til dig at komme ud uden der er nogen der ser dig !

" +
“tryk mellemrums tasten for at starte”;

	}
	void Start () 
	{
		Startgame ();
	}
	// Update is called once per frame
	void Update () 
	{
		if (myState == States.celle) {state_celle();}
		if (Input.GetKeyDown (KeyCode.I)) {getinvertory ();} 
		else if (myState == States.seng_0) {
			state_seng_0 ();
		} else if (Input.GetKeyDown (KeyCode.Space)) {
			myState = States.celle;
		} else if (myState == States.seng_1) {
			state_seng_1 ();
		} else if (myState == States.dør) {state_dør();}


	}
	//start celle
	void state_celle()
		{
			
			text.text ="Du kigger dig omkring i din celle der er tre ting du har din seng, dit spejl og låsen på døren

" +
"tryk S for at gå hen til sengen
"+
"tryk D for at gå hen til døren
"+
“tryk V for at gå hen til spejlet”;
if (Input.GetKeyDown (KeyCode.S)) {myState = States.seng_0;}

		}
		void state_seng_0()
		{
		text.text = "Du går hen til sengen, du kigger lidt sengetøjet har ikke været vasket i en måned eller to, det lugter og er gult,

" +
"lanet er langt og kan måske bruges senere tryk E for at tage lanet med dig
" +
“tryk R for at komme tilbage”;
if (Input.GetKeyDown (KeyCode.E))
{
if(invertory.Count <= 0){
invertory.Add(“Lagenet fra sengen,”);
myState = States.seng_1;}
else if (invertory.Contains(“Lagenet fra sengen,”))
{ invi.text = “du har allerede taget lanet”;
invi.enabled = true;
StartCoroutine(Distro());
}
if (Input.GetKeyDown (KeyCode.D)) {myState = States.dør;}
else if (Input.GetKeyDown (KeyCode.R)){myState = States.celle;}
}
else if (Input.GetKeyDown(KeyCode.R)) {myState = States.celle;}
}

		void  state_seng_1()
			{
				text.text ="Du har nu taget lanet

" +
"tryk D for at gå hen til døren
"+
“tryk V for at gå hen til spejlet”;
if (Input.GetKeyDown (KeyCode.D)) {myState = States.dør;}
else if (Input.GetKeyDown (KeyCode.V)) {myState = States.spejl;}
}
void state_dør ()
{
text.text ="Du Kigger på Døren det en klassik celle dør du hiver lidt i døren den rykker sig overhoved ikke, du kigger på låsen og ser den er så slidt at hvis du finder noget spidst kan du måske få den op!
"+
"tryk V for at gå hen til spejlet
"+
"tryk S for at gå hen til sengen
"+
“tryk E for at låse døren op”;
if (Input.GetKeyDown (KeyCode.V)) {myState = States.spejl;}
else if (Input.GetKeyDown (KeyCode.S)) {myState = States.seng_0;}
else if (Input.GetKeyDown (KeyCode.E)&& invertory.Contains (“et langt stykke glas”)) {myState = States.gang;}

			}
		void state_spejl()
			{
				text.text ="Du kigger nu dit spejl billede du har mange sår efter vagterne gav dig bank, spejlet er meget skrøbeligt

"+
"tryk D for at gå hen til døren
"+
"tryk S for at gå hen til sengen
"+
“tryk E for at smadre spejlet”;
if(Input.GetKeyDown (KeyCode.D)) {myState = States.dør;}
else if (Input.GetKeyDown (KeyCode.S)) {myState = States.seng_0;}
else if (Input.GetKeyDown (KeyCode.E))
{
if (invertory.Contains(“et langt stykke glas”))
{
invi.text = “du har allerede smadret glasset”;
invi.enabled = true;
StartCoroutine(Distro());
}
else if (invertory.Count > 0)
{
invertory.Add (“et langt stykke glas”);
invi.text = “du har nu fået et langt stykke glas fra spjelet”;
invi.enabled =true;
StartCoroutine(Distro());
}
}
}
//få invitar
public void getinvertory()
{
//
if (invertory.Count == 0)
{
invi.text =“Du har ikke noget endnu”;
invi.enabled = true;
StartCoroutine (Distro());

				}

			else if (invertory.Count >= 0)
			for(int i = 0; i < invertory.Count;)
				{
					invi.text = " " + invertory*;*
  •  			i ++;*
    

_ invi.text = " " + invertory*;_
_
}_
_
invi.enabled = true;_
_
StartCoroutine (Distro());_
_
}_
_
IEnumerator Distro()_
_
{_
_
yield return new WaitForSeconds(5);_
_
invi.enabled= false;_
_
}*_

}

Yes, line 126 is the problem. Because you increment i inside the cycle’s body, so - at the last iteration - you will access invertory* while i is equal to invertory.Count.*

for(int i = 0; i < invertory.Count;)
{
invi.text = " " + invertory*;*
i ++;
invi.text = " " + invertory*;*
}
Why are you incrementing i inside of the for loop? When you get to i = inventory.Count - 1, incrementing i here and then referencing inventory is likely the cause of your error.
A for loop would generally look like this:
for (int i = 0; i < inventory.Count; i++)
{
// do your stuff, don’t muck with the value of i
}