How to get Rid of this error: not all code paths return a value?
c#, monodevelop, syntax-error, xcode
Solution
Work out what you want to happen if you never find `x`, and return that at the end of the method. For example:
// Fixed naming conventions and indentation...
// Why do we need n here at all? Why not just use the length of the array?
int Search(string[][] mat, int n, string x)
{
//set indexes for top right element
for (int i = 0; i < n; i++)
{
// Why are we looking backwards here?
for (int j = n - 1; j >= 0; j--)
{
if (mat[i][j] == x)
{
// More readable formatting...
Debug.Log(string.Format("{0} found at {1}, {2}", x, i, j));
return i;
}
}
}
// Not found: return -1 to indicate failure. Or you could throw an exception
return -1;
}
More generally: the compiler error message was reasonably clear here - there was a way that you could get to the end of the method without returning anything. It's worth taking a step back and trying to think about why you couldn't work this out yourself. Did you pay enough attention to the compiler error message? Had you though through everything the method might do, in all situations? How could you handle this better next time?
Problem
``` int search(string [][]mat, int n, string x){ //set indexes for top right element for(int i = 0; i<n; i++) { for(int j = n-1; j>=0; j--) { if ( mat[i][j] == x ) { Debug.Log(x +""+"Found at "+i +" "+j); // int[] n2 = new int[] {2, 4, 6, 8}; // int [] xyz = new int [] {i, j}; return i; } } }} ``` How to get Rid of this error: not all code paths return a value? Error: *Assets/Scripts/Chess/Bishop.cs(237,22): error CS0161: `Bishop.search(string[][], int, string)': not all code paths return a value*