Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Tasteneingabe überprüfen | Console
fneuweiler
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

Tasteneingabe überprüfen | Console

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

Siehe Parse()-Methode, z.B. double.Parse() oder int.Parse(). Ist die Eingabe keine entsprechende Zahl, wird eine Exception geworfen.
private Nachricht | Beiträge des Benutzers
fneuweiler
myCSharp.de - Member



Dabei seit:
Beiträge: 17

Themenstarter:

beantworten | zitieren | melden

Gibts auch ne andere Möglichkeit? Oder kann mirdas jemand erklären??
private Nachricht | Beiträge des Benutzers
svenson
myCSharp.de - Member



Dabei seit:
Beiträge: 8775
Herkunft: Berlin

beantworten | zitieren | melden

 
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();

		}
	}
}
private Nachricht | Beiträge des Benutzers
kemanisebuh
myCSharp.de - Member



Dabei seit:
Beiträge: 1

beantworten | zitieren | melden


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.
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 52329
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers