C sharp - try_catch no funciona

 
Vista:
sin imagen de perfil
Val: 6
Ha disminuido su posición en 51 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

try_catch no funciona

Publicado por César (3 intervenciones) el 25/06/2020 14:56:53
Hola a todos,

Estoy intentando hacer un ejercicio para practicar arrays. Tienes que introducir 10 números y luego el usuario ir preguntando y comprobar si existe ese número o no en el array.

El tema es que intentaba utilizar las instrucciones try y catch para controlar las excepciones por si el usuario introduce letras en lugar de números pero no logro hacerlo funcionar. Lo que sucede es que si introduzco un número que no está dentro del array me dice "formato incorrecto" cuando debería avisar de que ese número no está en el array.

Alguien me puede indicar lo que estoy haciendo mal? Le he dado vueltas y vueltas pero la verdad es que no se porqué no funciona.

El código es un poco mierder pero estoy empezando así que no me lo tengáis mucho en cuenta ;)

Muchas gracias y un saludo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
/* Pide al usuario 10 enteros largos. A continuación, deberás pedirle un
 * número y decirle si estaba entre los datos iniciales, luego pedirle otro y
 * así sucesivamente, hasta que teclee la palabra "fin" en vez de un número
 *
*/
 
 
using System;
 
class programa
{
    static void Main()
    {
            long[] numeros = new long[10];
            string respuesta = "";
            long numeroUsuario = 0;
            bool encontrado = false;
 
 
            for (int i = 0; i < numeros.Length; i++)
            {
                Console.Write("Dime el número {0}: ", i+1);
                numeros[i] = Convert.ToInt64(Console.ReadLine());
            }
            do
            {
 
                try
                {
                    Console.WriteLine();
                    Console.Write ("Dime el número que quieres encontrar: ");
                    respuesta = Console.ReadLine();
                    encontrado = false;
                    int i = 0;
 
                    if (respuesta != "fin")
                    {
                        numeroUsuario = Convert.ToInt64(respuesta);
 
/*                        foreach (long numero  in numeros)
                        {
                            if (numero == numeroUsuario)
                                encontrado = true;
                        }
*/
 
                        do
                        {
                            if (numeroUsuario == numeros[i])
                            {
                                encontrado = true;
                            }
                            i++;
                        }
                        while (i <= numeros.Length && !encontrado);
 
                        if (encontrado)
                        {
                            Console.WriteLine("Número encontrado");
                        }
                        else
                        {
                            Console.WriteLine(encontrado);
                            Console.WriteLine("Numero NO encontrado");
                        }
                    }
                }
                catch (Exception)
                {
                    Console.Write("Formato incorrecto");
                }
 
            }
            while (respuesta != "fin");
    }
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

try_catch no funciona

Publicado por Nacho (115 intervenciones) el 25/06/2020 16:42:44
El catch se llama cuando hay un error, sea el que sea. Si pones while (i <= numeros.Length && !encontrado); va a producirse un error si no está el número porque va a leer fuera del array. i no puede tener un valor igual a numeros.Length, sólo menor.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 51 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

try_catch no funciona

Publicado por César (3 intervenciones) el 26/06/2020 07:27:01
Tienes razón, el while estaba contando hasta la longitud del array pero no estaba contando con que el índice de los arrays van desde el 0 hasta el Length -1 (array de 10 = índice desde 0-9), con lo cuál siempre se pasaba buscando en el array y siempre daba el mismo error.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Javier
Val: 96
Bronce
Ha mantenido su posición en C sharp (en relación al último mes)
Gráfica de C sharp

try_catch no funciona

Publicado por Javier (40 intervenciones) el 25/06/2020 23:57:32
Toma la excepcion que te esta enviando para que te des una idea.
1
2
3
4
catch (Exception ex)
                {
                    Console.Write(ex.Message);
                }
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 6
Ha disminuido su posición en 51 puestos en C sharp (en relación al último mes)
Gráfica de C sharp

try_catch no funciona

Publicado por César (3 intervenciones) el 26/06/2020 07:28:30
Gracias, imprimiendo la excepción directamente me quedó mucho más claro que el fallo era, visto el problema fue resolverlo en 2 segundos.

Muchas gracias a los 2 :)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar