The idea is to create an array of integers with the amount of rows and columns defined by the user. Then an existing value in the array must be entered and the program should return the values immediately to the left, right, above and below the array.
Example
Número de Linhas: 3 Número de Colunas: 4 10 7 15 12 21 11 23 8 14 5 13 19 Número que deseja verificar: 11 Esquerda: 21 Direita: 23 Acima: 7 Abaixo: 5
The code I developed works perfectly when you insert an array value that is not in the 'corner'. If I enter a value that is in the 'corner' the program throws the System.IndexOutOfRangeException
exception indicating that there are no values immediately above / left / down / right of the desired value.
How could I handle this exception? Any tips are welcome since my goal is to learn. Here's my code for review.
namespace ConsoleApp1
{
class Program
{
static void Main(string[] args)
{
string[] Linha = Console.ReadLine().Split(' ');
int[,] Numeros = new int[int.Parse(Linha[0]), int.Parse(Linha[1])];
for (int i = 0; i < int.Parse(Linha[0]); i++)
{
string[] vet = Console.ReadLine().Split(' ');
for (int j = 0; j < int.Parse(Linha[1]); j++)
{
Numeros[i, j] = int.Parse(vet[j]);
}
}
string[] Localizacao = new string[4];
int Num = int.Parse(Console.ReadLine());
for (int i = 0; i < int.Parse(Linha[0]); i++)
{
for (int j = 0; j < int.Parse(Linha[1]); j++)
{
if (Numeros[i, j] == Num)
{
Localizacao[0] = Numeros[i, j - 1].ToString();
Localizacao[1] = Numeros[i, j + 1].ToString();
Localizacao[2] = Numeros[i - 1, j].ToString();
Localizacao[3] = Numeros[i + 1, j].ToString();
}
}
}
Console.WriteLine("Esquerda: " + Localizacao[0]);
Console.WriteLine("Direita: " + Localizacao[1]);
Console.WriteLine("Acima: " + Localizacao[2]);
Console.WriteLine("Abaixo: " + Localizacao[3]);
Console.ReadLine();
}
}
}