Search code examples
unity-game-engineinfinite-loop

Unity crashing because of an infinite loop i cant seem to identify


I am trying to create a random number picker that picks numbers from 0 to 29 and then blocks repetitive numbers. ex:if it picks 17 it cant pick 17 again until its picked every other number from 0 to 29. However every time I run my code Unity seems to freeze or get stuck on the Application.EnteringPlayMode screen.I researched it a bit and it looks like its probably because of an infinite loop , but i cant seem to find one, can anyone help out?

        ENDINGVAR = 0;


        int[] ews30 = new int[30];
        for (int i = 0; i < ews30.Length - 1; i++)
        {
            ews30[i] = -1;
        }

        minuslength = 0;
        while (ENDINGVAR<30)
        {

            flag = false;
            while (flag == false)
            {
                flag = true;
                int randomIndex = random.Next(0, 29);
                for (int j = 0; j < 30; j++)
                {
                    if (ews30[j] == randomIndex)
                    {
                        flag = false;
                    }

                }
                if (flag == true)
                {
                    ews30[minuslength] = randomIndex;
                    erwthsh = randomIndex;
                    minuslength = minuslength + 1;
                }
            }

Solution

  • Check this code

    int[] ews30 = new int[30];
    for (int i = 0; i < ews30.Length; i++)
    {
        ews30[i] = -1;
    }
    
    int minuslength = 0;
    while (minuslength < 30)
    {
        boolean flag = false;
        while (!flag)
        {
            flag = true;
            int randomIndex = random.Next(0, 30);
            for (int j = 0; j < 30; j++)
            {
                if (ews30[j] == randomIndex)
                {
                    flag = false;
                    break;
                }
            }
            if (flag)
            {
                ews30[minuslength] = randomIndex;
                minuslength++;
            }
        }
    }