Hallo,
ich schreibe gerade ein Konsolenprogramm mit dem ich lineare Gleichungssysteme nach dem Additionsverfahren lösen kann. Ich habe mir Tutorials auf Youtube angesehen und gegoogelt wie ein Elch. Bin absolut nicht auf die Lösung gestoßen wie ich in einer Konsolen-App nur die Eingabe von Ganzzahlen und kommazahlen gar nicht erst zulassen kann oder auch Buchstaben und Sonderzeichen unterbinde. Über Lösungsvorschläge in Form von Code würde ich mich sehr freuen.
Vielen Dank im Voraus
Liebe Grüße
Shutouke
Letztlich kann man die Eingaben (wohl) nur auf Validität prüfen und intern geeignet weiterverarbeiten: https://www.dotnetperls.com/parse (inkl. TryParse)
Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉
Gar nicht, weil so Konsolen nicht funktionieren; weder auf Windows noch auf anderen Betriebssystemen. Eine Konsole ist nur eine Visualisierung eines Datenstreams. Es ist keine Benutzeroberfläche mit Eingabelimits o.ä.
Im Endeffekt musst Du jede Eingabe annehmen, dann validieren und wenns nich passt das letzte Zeichen in der Console löschen (überschreiben).
Es gibt fertige .NET Libs, die sowas prinzipiell können bzw. einfachere Möglichkeiten haben, als das selbst umzusetzen. Sowas nennt sich dann Interactive Shell.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Du kannst Console.ReadKey(true) nutzen, um Tasten entgegenzunehmen, ohne dass sie angezeigt werden.
Die Taste kannst Du dann prüfen und - sofern gültig - das Zeichen selber in die Konsole schreiben.
Vieles musst Du dann aber selber machen, z.B. sind Tausender-Trennzeichen ein eigentlich gültiger Teil einer Zahl, würdest Du mit einer Prüfung auf nur Ziffern aber verbieten. Gleiches auch bei Nachkommastellen oder anderen Darstellungen von Zahlen.
Ob es das wert ist, musst Du dir überlegen, aber wenn die Eingabeoptionen sehr beschränkt sind (z.B. Ziffern eines Menüs) spricht da mMn. nichts gegen.
NuGet Packages im Code auslesen
lock Alternative für async/await
Beim CleanCode zählen nicht die Regeln, sondern dass wir uns mit diesen Regeln befassen, selbst wenn wir sie nicht befolgen - hoffentlich nach reiflichen Überlegungen.
Man sollte überlegen wie nutzerfreundlich es wirklich ist, wenn Tasten still und leise einfach nur nichts bewirken. Das irritiert mehr als es hilft.
Da ist es verständlicher wenn man eingeben kann was man will, sieht dass was passiert und danach dann eine Meldung erhält dass die Eingabe keine gültige Zahl ist.