Autor Tema: C# Ejercicio para practicar arrays (arreglos) controlar try_catch no funciona  (Leído 1734 veces)

Reseko

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
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.

Código: [Seleccionar]
/* 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");
    }
}
« Última modificación: 18 de Octubre 2020, 19:40 por Ogramar »

Reseko

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 2
    • Ver Perfil
Re:try_catch no funciona en C#
« Respuesta #1 en: 26 de Junio 2020, 07:30 »
Bueno, al final me dieron un empujón y logré saber que era lo que estaba fallando.

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.

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Re:try_catch no funciona en C#
« Respuesta #2 en: 26 de Junio 2020, 23:39 »
Gracias por compartir la solución, puede ayudar a otras personas.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".