- Home /
array problem index out of range ? why ?
private List<string[]> questions = new List<string[]>();
private List<int> answerOrder = new List<int>(new int[] {1,2,3,4,5});
void DrawInfo() {
Rect rect = new Rect(500, 100, 400, 200);
Rect close = new Rect(600, 500, 200, 100);
if(GUI.Button(close, "ATTACK")) {
Poop = !Poop;
}
if (Poop) {
GUI.Box(rect, Info);
GUI.Label(new Rect(520, 110, 400, 30), questions[0][0]);
if (GUI.Button(new Rect(520, 200, 100, 30), questions[0][answerOrder[0]])) {
HandleAnswer(answerOrder[0]);
}
if (GUI.Button(new Rect(520, 250, 100, 30), questions[0][answerOrder[1]])) {
HandleAnswer(answerOrder[1]);
}
if (GUI.Button(new Rect(780, 200, 100, 30), questions[0][answerOrder[2]])) {
HandleAnswer(answerOrder[2]);
}
if (GUI.Button(new Rect(780, 250, 100, 30), questions[0][answerOrder[3]])) {
HandleAnswer(answerOrder[3]);
}
if (GUI.Button(new Rect(780, 250, 100, 30), questions[0][answerOrder[4]])) {
HandleAnswer(answerOrder[4]);
}
}
}
void Start() {
// String order: question, correct, wrong, wrong, wrong
questions.Add(new string[] { "What in the capital of France?", "Paris", "New York", "London", "Madrid" });
questions.Add(new string[] { "Which of these is an amphibian?", "Frog", "Shark", "Lizard", "Hawk" });
questions.Add(new string[] { "Which of these is an planet?", "Neptune", "Thor", "Pegasus", "Hera" });
questions.Add(new string[] { "Which of these is smallest planet?", "Pluto", "Thor", "Pegasus", "Hera" });
questions.Add(new string[] { "What in the capital of Philippines?", "Manila", " Las Pinas", "Makati", "Bulacan" });
Shuffle(questions);
Shuffle(answerOrder);
}
void NextQuestion() {
questions.RemoveAt(0);
Shuffle(answerOrder);
}
static readonly System.Random rng = new System.Random();
public static void Shuffle<T>(IList<T> list) {
int n = list.Count;
while(n > 1) {
n--;
int k = rng.Next(n + 1);
T value = list[k];
list[k] = list[n];
list[n] = value;
}
}
}
what happens is when i run it error will occur saying array index is out of range and i dont know how to fix it please help me thankyou
Answer by FuzzyLogic · Feb 17, 2014 at 07:35 AM
The problem appears to be on line 30. Each question has 4 possible answers (index 1 to 4) but answersOrder[4] refers to index 5, which is out of range.
@Uping: Well you have 4 answers (and 4 values in your answersOrder array) but here you display 5 buttons. That's why your insex is out of range. You only have 4 values (index: 0, 1, 2, 3) so remove the last button entirely. (Which you did in your duplicate question)
Answer by DaveA · Feb 17, 2014 at 07:01 AM
I'm betting it's this:
int n = list.Count;
Let's say that's 5.
Then n-- makes it 4;
Then rng.Next( n + 1); // does what?
May result in a 5? which would be out of bounds.
why? my list count is 5 as far as i know, anyway what should i do to fix this ...
rng.Next(X) returns a value >= 0 and < X. So this is not the problem.
okay i think its the n your correct can you $$anonymous$$ch me how to fix that
Your answer
Follow this Question
Related Questions
Wierd Animation Bug 0 Answers
Array Index out of range (JavaScript) 1 Answer
Array index is out of Range!? 1 Answer
Array index is out of range and Raycast question 0 Answers
C# - IndexOutOfRangeException - Array index is out of range 2 Answers