C sharp - Control de errores.

   
Vista:

Control de errores.

Publicado por wind (9 intervenciones) el 30/05/2014 21:00:52
Saludos cordiales.

Este simple programa muestra el número que haz ingresado, el programa te pide que presiones una tecla para ingresar otro número y así sucesivamente, porque está dentro del ciclo. (Me gusta este comportamiento)
Sin embargo cuando introduzco una letra, aparece el mensaje
1
("Ingrese solo números enteros positivos.");
Esto está bien, pero... Se acaba el ciclo.
Deseo que el ciclo no se acabe si se introduce una letra o cualquier carácter que no sea número. Es decir, introduzco una letra, aparecerá el mensaje: " "Ingrese solo números enteros positivos." y luego debería aparecer el mensaje:
Presione una tecla para ingresar otro número. (Ciclo infinito)



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
using System;
namespace borrar
{
	class programa
	{
		static void Main()
		{
			float primernumero;
 
 
			Console.ForegroundColor = ConsoleColor.White;
			Console.WriteLine("Programa Control de errores.");
			try
			{
				do
				{
			Console.Write("Ingrese un número: ");
			primernumero = Convert.ToSingle(
			Console.ReadLine());
 
			Console.WriteLine("El número ingresado es: {0}", primernumero);
			Console.WriteLine("Presione una tecla para ingresar otro número.");
			Console.ReadKey();
			}
				while (primernumero == primernumero);
			}
 
		catch (FormatException)
		{
			Console.WriteLine("Ingrese solo números enteros positivos.");
			Console.ReadLine();
		}
 
			}}}
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

Control de errores.

Publicado por Pico (114 intervenciones) el 30/05/2014 21:26:27
Sí, el programa hace exactamente lo que le has dicho. Lo grave sería que le dijeras una cosa e hiciera otra.

Tú lo que quieres decirle es que el control de errores esté dentro del while, no fuera. Si está fuera al producirse un error sale del while, claro.

Tú quieres algo como

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
static void Main()
        {
            float primernumero=0;
            Console.ForegroundColor = ConsoleColor.White;
            Console.WriteLine("Programa Control de errores.");
            do
            {
                try
                {
 
                    {
                        Console.Write("Ingrese un número: ");
                        primernumero = Convert.ToSingle(Console.ReadLine());
                        Console.WriteLine("El número ingresado es: {0}", primernumero);
                        if (primernumero == 0) break;
                        Console.WriteLine("Presione una tecla para ingresar otro número.");
                        Console.ReadKey(true);
                    }
                }
                catch (FormatException)
                {
                    Console.WriteLine("Ingrese solo números enteros positivos.");
                    Console.WriteLine("Presione una tecla para ingresar otro número.");
                    Console.ReadKey(true);
                }
            }
            while (true);
            Console.WriteLine("Ya podemos irnos de birras");
            long a = DateTime.Now.Ticks;
            do { } while (a + 20000000 > DateTime.Now.Ticks);
        }
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

Control de errores.

Publicado por wind (9 intervenciones) el 01/06/2014 01:19:47
Compilé el código que haz escrito! eso buscaba!
Solamente que no comprendo el (true), ¿podrías explicarlo?
Lo otro..¿como sería el código resultante, si yo no quiero usar el break? ¿es posible?


float primernumero=0
if (primernumero == 0) break;
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

Control de errores.

Publicado por Pico (114 intervenciones) el 01/06/2014 09:35:09
while(true) no sale del bucle mientras true, o sea, no sale. Es como el while(primernumero=primernumero) que va a dar siempre true.

Podrías poner while(primernumero==0) para que salga al poner 0, pero ejecutaría otras líneas de código y queda feo.
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