Laden...

Consolenanwendung: Löschen von Bestimmten eingabe

Erstellt von B0SS vor 14 Jahren Letzter Beitrag vor 14 Jahren 3.219 Views
B
B0SS Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren
Consolenanwendung: Löschen von Bestimmten eingabe

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

3.511 Beiträge seit 2005
vor 14 Jahren

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)

G
1 Beiträge seit 2009
vor 14 Jahren

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.

B
B0SS Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

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!!

458 Beiträge seit 2007
vor 14 Jahren

Benutz doch bitte die CODE-Tags, dazu sind sie da.

be the hammer, not the nail!

49.485 Beiträge seit 2005
vor 14 Jahren

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

B
B0SS Themenstarter:in
8 Beiträge seit 2009
vor 14 Jahren

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');
                
            }

        }
    }
}




F
155 Beiträge seit 2009
vor 14 Jahren

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."