Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialKarlijn Willems
9,961 PointsUnreachable code in a for loop in C#... what am I doing wrong?
The exercise is to make an override method that returns true when the preceding number in the array is the same. I got stuck on the for loop, it says that there is unreachable code, I am can't see it. Appreciate your help. :)
namespace Treehouse.CodeChallenges
{
class SequenceDetector
{
public virtual bool Scan(int[] sequence)
{
return true;
}
}
class RepeatDetector : SequenceDetector
{
public override bool Scan(int[] sequence)
{
for (int i = 0; i < sequence.Length; i++)
{
if(i == 0)
return false;
if(sequence[i] == sequence[i-1])
{
return true;
}
else
return false;
}
}
}
}
5 Answers
Robert Anthony
19,952 PointsYes, you're right, sorry, I didn't spot it.
The issue is that the loop starts with i=0 and the first test is: If i==0 return false.
This means that the loop starts and then stops immediately as i==0.
What is the test to check if i==0 for?
Robert Anthony
19,952 PointsYou haven't put {} around the first return statement after your if, meaning all the rest of the code won't ever be executed, it will hit the return and return!
Steven Parker
231,268 PointsAny code following a "return" statement is "unreachable code". But the first error was "not all code paths return a value". That's pointing out that if the "for" loop completes (or if the condition is never met), there isn't any "return" statement following it to provide the necessary value.
Also, the loop should only return (with "true") if a match is found. Otherwise, it should continue checking other elements.
Karlijn Willems
9,961 Pointsthat doesn't work either.... I tried it like that before.
Also, I thought an if statement should be able to do without {} when it is only one line? since the next line is another ifstatement, I don't see why that wouldn't be possible in this context?
Karlijn Willems
9,961 PointsThank you guys! I implemented the first ifstatement because, I thought, otherwise it would go wrong with the second statement in case i = 0 then i - 1 would be a problem... but I was thinking about it all in the wrong way... I just changed i = 0 to i =1 in the for loop and deleted the first ifstatementis the same as the preceding. But it is true if ANY value is the same... so I made an extra boolean to check if there is any value the same as the preceding one so I could make a seperate if-else statement to return true or false at the end of the method. Solved! =)