Hallo, wollte mal fragen ob es möglich ist eine bestimmte Eingabe aus der Konsole zu löschen.
z.B
Console.WriteLine ("Text");
Console.WriteLine ("Text");
Console.WriteLine ("Text");
Console.WriteLine ("Text");
ErsteEingabe:
Console.Write("\t\tZahl1:\t\t");
strZahl1 = Console.ReadLine();
try
{
dZahl1 = Convert.ToDouble(strZahl1);
}
catch
{
Console.WriteLine("\n\t\tBitte nur Zahlen eingeben!\n\n");
goto ErsteEingabe;
}
Wenn ich keine Zahl eingebe (z.B buchstabe), dann springe ich automatisch zu der Zahl eingabe wieder zurück. Und es wird wieder nach der Zahl gefragt und ausgegeben.
Ich möchte aber dass die richtige eingabe einer Zahl den vorherigen text überschreibt. Sprich ein Teil der Konsolenausgabe überschreibt. Damit der Text nich mehrmal ausgegeben wird.
mfg
Hallo und willkommen!
Schau dir nochmal die Methoden an, die Console dir anbietet. SetCursorPosition wäre z.B. etwas für dich. Im Falle eines Fehlers, setzt du den Cursor wieder zurück an die ursprüungliche Position.
Achja, verwende besser doubly.TryParse um die Eingabe zu überprüfen.
"Jedes Ding hat drei Seiten, eine positive, eine negative und eine komische." (Karl Valentin)
Hallo BOSS
nach Khalid's vorschlag würde dein code wie folgt aussehen:
Console.WriteLine( "Text" );
Console.WriteLine( "Text" );
Console.WriteLine( "Text" );
Console.WriteLine( "Text" );
double zahl;
string eingabe = "";
int left = Console.CursorLeft;
int top = Console.CursorTop;
while( !double.TryParse( eingabe, out zahl ) )
{
Console.SetCursorPosition( left, top );
Console.Write( "\t\tZahl1:\t\t" );
eingabe = Console.ReadLine();
}
ich würde Dir auch empfehlen, gänzlich auf das goto keyword zu verzichten.
Also mit dem zurück Springen klappt schon mal, nur der Text der schon vorher eingegeben wurde bleibt unter dem Cursor und wird erst nach der neuen eingabe überschrieben. Ich möchte aber dass die falsche eingabe verschwinden.
Mit dem Tryparse klappt bei mir ihrgend wie nicht. bekomme ständig einen fehler
Also zum hintergrung, ich hatte mal was mit c++ zutun.
Jetzt mache ich eine Weiterbildung und wir benutzen c#.
Die Aufgabe lautet ein Taschenrechner.
Die aufgabe ansich ist nicht so schwehr, bloss nur diese feinheiten.
kommt noch!!
Benutz doch bitte die CODE-Tags, dazu sind sie da.
be the hammer, not the nail!
Hallo B0SS,
nur der Text der schon vorher eingegeben wurde bleibt unter dem Cursor und wird erst nach der neuen eingabe überschrieben.
überschreibe diese mit Leerzeichen mit Console.Write.
herbivore
Hab jetzt korregiert, blos warum springt der nach der eingabe der "J" tast nicht zurück zu der eingabe der ersten zahl, sondern zu der Funktion??
namespace Taschenrechner
{
class Sample
{
protected static int origRow;
protected static int origCol;
protected static void WriteAt(string s, int x, int y)
{
try
{
Console.SetCursorPosition(origCol + x, origRow + y);
Console.Write(s);
}
catch (ArgumentOutOfRangeException e)
{
Console.Clear();
Console.WriteLine(e.Message);
}
}
class Program
{
static void Main(string[] args)
{
double dZahl1, dZahl2; //Variablendeklaration
string strFunktion, strEingabe1 = "", strEingabe2 = "";
ConsoleKeyInfo taste = new ConsoleKeyInfo(); //Variablendeklaration für eine Aski Taste
Console.WriteLine("\t\t\tTaschenrechner\n\n"); //Einfach Textausgabe
Console.WriteLine("\t Folgende Funktionen sind verfügbar:\n");
Console.WriteLine("\t\t\t+ - * /\n");
do //Beginn einer Do While schleife
{
while (!double.TryParse(strEingabe1, out dZahl1))
{
Console.Write("\t\tZahl1:\t\t");
strEingabe1 = Console.ReadLine();
}
Console.Write("\t\tFunktion:\t");
funktion:
strFunktion = Console.ReadLine();
if (strFunktion == "+" || strFunktion == "-" || strFunktion == "*" || strFunktion == "/")
{
}
else
{
Console.WriteLine("Diese Funktion ist nicht Möglich!");
goto funktion;
}
while (!double.TryParse(strEingabe2, out dZahl2))
{
Console.Write("\t\tZahl2:\t\t");
strEingabe2 = Console.ReadLine();
}
Console.Write("Weiter mit Berechnung j / n ?\t");
taste = Console.ReadKey();
Console.WriteLine("\n\n");
}
while (taste.KeyChar == 'j');
}
}
}
}
Hallo
du kontrollierst mit:
while (!double.TryParse(strEingabe1, out dZahl1))
ob die eingegebene Zahl wirklich eine Zahl ist, aber der Wert von strEingabe1 wird nicht zurückgesetzt Die richtige Eingabe bleibt gespeichert.
Du könntest es so machen:
strEingabe1 = "";
while (!double.TryParse(strEingabe1, out dZahl1))
{
Console.Write("\t\tZahl1:\t\t");
strEingabe1 = Console.ReadLine();
}
Oder so:
do
{
Console.Write("\t\tZahl1:\t\t");
strEingabe1 = Console.ReadLine();
}while (!double.TryParse(strEingabe1, out dZahl1));
"We better hurry up and start coding, there are going to be a lot of bugs to fix."