Laden...

Tasteneingabe überprüfen | Console

Erstellt von fneuweiler vor 18 Jahren Letzter Beitrag vor 18 Jahren 11.411 Views
F
fneuweiler Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren
Tasteneingabe überprüfen | Console

Ich schreibe geradeein Programm für die Console mit C# wie kann ich meine Eingaben dort überprüfen das dies nur Zahlen sind und nix anderes??

Schonmal THX

S
8.746 Beiträge seit 2005
vor 18 Jahren

Siehe Parse()-Methode, z.B. double.Parse() oder int.Parse(). Ist die Eingabe keine entsprechende Zahl, wird eine Exception geworfen.

F
fneuweiler Themenstarter:in
17 Beiträge seit 2005
vor 18 Jahren

Gibts auch ne andere Möglichkeit? Oder kann mirdas jemand erklären??

S
8.746 Beiträge seit 2005
vor 18 Jahren
 
using System;
using System.IO;

namespace ConsoleApplication43
{
	class Class1
	{
		[STAThread]
		static void Main(string[] args)
		{
			Console.WriteLine("Text eingeben und Ganzzahl-Prüfung mit <RETURN> starten."); 
			string eingabe = Console.ReadLine();
			try
			{
				int eingabeAlsGanzzahl = int.Parse(eingabe);
				// keine Exception, Eingabe ist eine Zahl
				Console.WriteLine("Eingabe war eine Ganzzahl");
			}
			catch (FormatException)
			{
				Console.WriteLine("Eingabe war keine gültige Ganzzahl."); 
			}

			Console.WriteLine("Taste drücken um Programm zu beenden..."); 
			Console.ReadLine();

		}
	}
}

K
1 Beiträge seit 2005
vor 18 Jahren

using System;

namespace TestEingabe
{
	class MainAPP
	{
		static void Main()
		{				
			string eingabe;
			int i;
			bool erg = false;

			//Diese Methode hat den Vorteil, daß ich nicht mit Exceptions arbeiten muß!

			while(!erg)
			{				
				//Eingabe einlesen
				Console.Write("Bitte eine Zahl eingeben: "); 
				eingabe = Console.ReadLine();

				//alle Zeichen einzeln überprüfen
				for(i=0; i<eingabe.Length; i++)
				{
					//Methode IsNumber() gibt bei einem als Zahl formatierbarem Zeichen ein true zurück!
					erg = char.IsNumber(eingabe, i);

					if(erg == false)
					{
						Console.WriteLine("Eingabe war keine Zahl!");
						break;
					}
				}
                                
                if(erg == true)
                    int zahl = int.Parse(eingabe);
			}
		}
	} 	
}

"Do things as simple as possible, but not any simpler!" A.E.

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo kemanisebuh,

keine gute Idee. Gibt mal eine hochgestellte Zwei ein. Peng, schon ist die Exception da, die du verhindern willst. Und da du mit der Exception nicht rechnest, stürtzt gleich das ganze Programm ab.

Auf der anderen Seite wird -1 nicht als Zahl erkannt.

Also nie versuchen eine Prüfung nachzuprogrammieren, die in einer vorgegebenen Methode schon realisiert ist, weil man nie sicher sein kann, dass man die Prüfung für alle Fälle genau so hart bzw. genauso weich hinbekommt, wie das Original.

Wenn man Exceptions vermeiden will, kann man unter 2.0 int.TryParse verwenden.

herbivore