C
C#14mo ago
F

❔ ✅ Help with a Lab

Hello! I'm pretty new when it comes to c# and i'm working on a Lab where we're making a basic game; guessing game with a "Hot & Cold" feature added to it. My code is in my native language; Swedish. But i'm getting this error after a random amount of guesses: "System.IndexOutOfRangeException" and it's at row 108 of my code. Would love some input. 🙂
142 Replies
F
FOP14mo ago
BlazeBin - pssjnhoxlaaf
A tool for sharing your source code with the world!
F
FOP14mo ago
here's the code in question
sibber
sibber14mo ago
first rule of programming is program is english so that other people can understand your code oh its english
F
FOP14mo ago
Yeah its just the menu texts that are in Swedish 🙂
sibber
sibber14mo ago
ah yeah thats fine
F
FOP14mo ago
Any ideas? Have you encountered that type of error before?
sibber
sibber14mo ago
yeah that means you tried to access an element thats outside of the range meaning it doesnt exist e.g.
MODiX
MODiX14mo ago
Cyberrex
REPL Result: Failure
int[] arr = { 1, 2 };
arr[2]
int[] arr = { 1, 2 };
arr[2]
Exception: IndexOutOfRangeException
- Index was outside the bounds of the array.
- Index was outside the bounds of the array.
Compile: 419.938ms | Execution: 34.645ms | React with ❌ to remove this embed.
sibber
sibber14mo ago
the range for this array is [0,1], when we try to access 2 it throws IndexOutOfRange do you know how to use a debugger?
F
FOP14mo ago
I don't think we have yet 😮
br0kE
br0kE14mo ago
VS debugger?
sibber
sibber14mo ago
its simple and really useful not necessarily vs what editor are you using?
br0kE
br0kE14mo ago
Visual Studio 2019
F
FOP14mo ago
Where do you see the array range being 0,1? VS 2022 for me (its the free version)
br0kE
br0kE14mo ago
Is your app a Windows Forms App and not .NET Framework ?
F
FOP14mo ago
it's .NET Framework
br0kE
br0kE14mo ago
K Don't switch tho That won't do anything
F
FOP14mo ago
oh, I'm just trying to figure out why this is happening. spent so much time on this its kinda silly hahaha
br0kE
br0kE14mo ago
I know absolutely zero about this cuz I'm a beginner
F
FOP14mo ago
me too, this programme started like 2 weeks ago for me
sibber
sibber14mo ago
those arent mutually exclusive youre on vs?
F
FOP14mo ago
Yeah i am!
sibber
sibber14mo ago
when you click next to a line ou can put a red dot try it
F
FOP14mo ago
What type of a line?
br0kE
br0kE14mo ago
All I know is simple shit like background images
sibber
sibber14mo ago
next to the line number
br0kE
br0kE14mo ago
Can't help with this
sibber
sibber14mo ago
No description
sibber
sibber14mo ago
when you hover your cursor this white circle appears click and it becomes red red dot means breakpoint
F
FOP14mo ago
oooh i see now
sibber
sibber14mo ago
which means the app will pause when it reaches this line try it
F
FOP14mo ago
should i do that at row 108?
sibber
sibber14mo ago
put a breakpoint on the first line of your app
F
FOP14mo ago
i assume oh
sibber
sibber14mo ago
just to try the debugger then we can actually debug your problem
F
FOP14mo ago
No description
sibber
sibber14mo ago
yup
F
FOP14mo ago
like this?
sibber
sibber14mo ago
and now run your app (in debug mode) why isnt your syntax highliting working?
F
FOP14mo ago
I dont know 😮
sibber
sibber14mo ago
can you run your app? from vs?
F
FOP14mo ago
Yeah
sibber
sibber14mo ago
huh weird anyway run your app
F
FOP14mo ago
No description
sibber
sibber14mo ago
no with your breakpoint dont remove it
F
FOP14mo ago
I didnt remove the breakpoint, its red 😮
sibber
sibber14mo ago
huh can you screenshot your entire vs window
F
FOP14mo ago
No description
sibber
sibber14mo ago
and the solution explorer
F
FOP14mo ago
No description
sibber
sibber14mo ago
hmm could be a netfx thing
F
FOP14mo ago
could it have something to do with row 108? as in this
sibber
sibber14mo ago
when you run your app should pause at the first line
F
FOP14mo ago
No description
sibber
sibber14mo ago
it shouldnt reach that point because of the breakpoint
F
FOP14mo ago
oh okay now its not running i think it only ran because i used the second start button
sibber
sibber14mo ago
what second one
F
FOP14mo ago
No description
F
FOP14mo ago
No description
sibber
sibber14mo ago
oh you mean the solid button
F
FOP14mo ago
that one haha
sibber
sibber14mo ago
no thats not the one you should be using
F
FOP14mo ago
oh i use that all the time
sibber
sibber14mo ago
but how did that work that buttons runs without debugging
F
FOP14mo ago
Haha good question
sibber
sibber14mo ago
wait this is the one you used now?
F
FOP14mo ago
No description
F
FOP14mo ago
the screen is empty
sibber
sibber14mo ago
yeah im aware because the program is paused
F
FOP14mo ago
oh
sibber
sibber14mo ago
ok so when your writing a program always run with the debugger so it breaks at exceptions aka dont use this one use the other one thats why it wasnt working anyway
F
FOP14mo ago
Okay, that makes sense
sibber
sibber14mo ago
break means pause anyway so now your editor looks like this right? the line highlighted in yellow is the line that will be executed next]
F
FOP14mo ago
yeah!
sibber
sibber14mo ago
which means it hasnt executed yet
sibber
sibber14mo ago
click this
No description
F
FOP14mo ago
done, it moved to the next one
sibber
sibber14mo ago
this button will execute the currently highlighted line
F
FOP14mo ago
thats handy
sibber
sibber14mo ago
yup so now you can go line by line and when you hover your mouse over a variable, you can see its value also at the bottom left panel theres a Locals tab this shows you all the local variables local means variables declared in the current scope
F
FOP14mo ago
Current scope as in things it sees on that highlighted line?
sibber
sibber14mo ago
locals are highlighted in this color
No description
F
FOP14mo ago
oh
sibber
sibber14mo ago
no it means things in the current method in this case
F
FOP14mo ago
oh i see
sibber
sibber14mo ago
so difficultyLevel, maxNumber, responses, are all locals
F
FOP14mo ago
that makes sense 😮 What do i do after the stepover?
sibber
sibber14mo ago
and you can see their value by either hovering your mouse over them or looking at the locals panel
F
FOP14mo ago
like just keep testing each line?
sibber
sibber14mo ago
so now you know how to use the debugger
F
FOP14mo ago
oh
sibber
sibber14mo ago
put your breakpoint at the line where it breaks oh another thing the continue button where the run button used to be means "execute until you reach the next breakpoint" so for example if you have a breakpoint in a loop, you can click continue and your program will run normally until it reaches the breakpoint again in the next iteration now your issue is at line 108
F
FOP14mo ago
oooh that's very handy
sibber
sibber14mo ago
so put a breakpoint there
F
FOP14mo ago
I did, pressed start and the program works fine...
sibber
sibber14mo ago
yeah so now try to reproduce the issue
F
FOP14mo ago
it crashes after the first guess
sibber
sibber14mo ago
crashes? it doesnt break? (again, break means pause execution)
F
FOP14mo ago
the program runs normally at first, i enter a value (in this instance it's 20) the command prompt crashes
sibber
sibber14mo ago
did you set the breakpiont?
F
FOP14mo ago
Yeah its red at #108
sibber
sibber14mo ago
and run with this button?
No description
F
FOP14mo ago
Yeah
sibber
sibber14mo ago
can you record what happens? snipping tool can record video
F
FOP14mo ago
okay
F
FOP14mo ago
F
FOP14mo ago
I cant type again in the Command prompt
sibber
sibber14mo ago
it doesnt crash that happens because your program is frozen because execution is paused
F
FOP14mo ago
ohh
sibber
sibber14mo ago
thats whats supposed to happen now leave the command prompt
F
FOP14mo ago
i see; sorry this is all new to me lol
sibber
sibber14mo ago
go to vs and execute line by line to see why the index is out of range no its fine :)
F
FOP14mo ago
So i just step over and press continue? and keep trying?
sibber
sibber14mo ago
actually you want to put the breakpoint at the start of the loop
F
FOP14mo ago
So on the While loop line? and just go down?
sibber
sibber14mo ago
yeah or no when you declare responseIndex because thats whats causing the issue you understand why this happens right?
F
FOP14mo ago
vaguely understand, i will know for sure when i've tested this a couple times all of this has taken me ~5-6h to make o_o
sibber
sibber14mo ago
i meant you understand what IndexOutOfRange means?
F
FOP14mo ago
Yeah i'd like to think that it self explanatory but basically say i have 5 arrays and im trying to access array #5 it does not exist since 0,1,2,3,4, exists or something like that right?
sibber
sibber14mo ago
element not array but yes
F
FOP14mo ago
Yeah that! still learning the words in specific XD Okay, so i did it from 101 to 115 the code ran and i got to choose a number from all of those up until the if (firstGuess) Line then it just crashed so i assume thats where it stops working
br0kE
br0kE14mo ago
@.sibber
sibber
sibber14mo ago
huh? wait which line are talking about
F
FOP14mo ago
Nvm, it just crashed
sibber
sibber14mo ago
we already know the problem is at line 108 the problem is with whatever you do here
int difference = Math.Abs(guess - number);
int responseIndex = Array.FindIndex(responseRanges, range => difference >= range);

if (responseIndex == -1)
{
responseIndex = responses.Length - 1; // Default till "It's lit!" om avståndet är mindre än 0
}

Console.WriteLine(responses[responseIndex]);
int difference = Math.Abs(guess - number);
int responseIndex = Array.FindIndex(responseRanges, range => difference >= range);

if (responseIndex == -1)
{
responseIndex = responses.Length - 1; // Default till "It's lit!" om avståndet är mindre än 0
}

Console.WriteLine(responses[responseIndex]);
responseIndex becomes out of range
F
FOP14mo ago
hmmm
sibber
sibber14mo ago
can you tell me what happens here? in your own word? why it throws?
F
FOP14mo ago
int difference = Math.Abs(guess - number); - this counts the difference between the users guesses and the right number int responseIndex = Array.FindIndex(responseRanges, range => difference >= range); this uses an array to search for the first element(?) where the difference is greater than the value for range.
sibber
sibber14mo ago
yes thats right but i meant explain why it would error when you try to acces an element in the array
F
FOP14mo ago
If i had to guess and i could absolutely be wrong here but my guess is that responseIndex is being set to -1 and theres no match in responseRanges???
sibber
sibber14mo ago
sorry i had to go the answer i was looking for is because youre trying to access and element thats not available kn responses qka theres no element at index responseIndex so, use the debugger and figure out what responseIndex is and the length of responses
F
FOP14mo ago
its okay, i appreciate all the help im getting i think i figured it out
sibber
sibber14mo ago
great :)
F
FOP14mo ago
Thank you so much for everything and the patience 😄
sibber
sibber14mo ago
np :) $close
MODiX
MODiX14mo ago
Use the /close command to mark a forum thread as answered
sibber
sibber14mo ago
@whitecoataladdin ^ if you have no further questions
F
FOP14mo ago
Will do, thanks again 🙂
Accord
Accord14mo ago
Was this issue resolved? If so, run /close - otherwise I will mark this as stale and this post will be archived until there is new activity.
Want results from more Discord servers?
Add your server