I got this code:
string[] changedHobbyList = listOfHobbies;
string[] finishedHobbyList = new string[3];
for (int i = 0; i < 3; i )
{
int num = Random.Range(0, changedHobbyList.Length-1);
finishedHobbyList[i] = changedHobbyList[num];
for (int l = num -1 ; l < changedHobbyList.Length; l )
{
changedHobbyList[l] = changedHobbyList[l 1];
}
}
from https://www.includehelp.com/dot-net/delete-an-element-from-given-position-from-array-using-c-sharp-program.aspx and I am getting an index out of bounds error and I know how im getting it, but I cant figure out a way to fix it, as well as just getting it working, so if you have a better idea, please and thank you
CodePudding user response:
What value is num? What is the lengths of your two arrays?
Your for loop looks like it's shifting everything from right to left by one. It's possible you're going out of bounds because your listOfHobbies length is greater than changedHobbies which could happen at changedHobbyList[l 1].
EDIT:
After reviewing the revised loop, it's because of your check in the for loop
l < changedHobbyList.Length
You're going out of bounds when l is 1 less than the length and you access the array like:
intArray[l 1];
consider changing it to:
for (int l = num -1 ; l < changedHobbyList.Length - 1; l )
{
changedHobbyList[l] = changedHobbyList[l 1];
}
CodePudding user response:
string[] changedList = new string[] {"hi,"cheese","more cheese"};
string[] changingList = new string[changedList.Length-1];
int num = *index being removed*;
int spot = 0;
for (int l = 0; l < changedList.Length; l )
{
if (l != num){
changingList[spot] = changedList[l];
spot ;
changedList = changingList;
}
this is basically creating a new list and then replacing it with the name of the one you inputed