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
Stack im Textfeld ausgeben
Lena2001
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

Stack im Textfeld ausgeben

beantworten | zitieren | melden

Hallo liebe C#-Community,
ich habe einen Taschenrechner mit WPF programmiert, das nach der umgekehrten polnischen Notation rechnet. Der Rechner funktioniert auch soweit, doch was noch nicht läuft ist, dass der Inhalt des Stacks (double) untereinander im Textfeld "txtStack" ausgegeben werden.
Ich habe die Methode show_Stack() versucht, die aber so nicht funktioniert.
Einen Ausschnitt des Programms findet ihr hier.
Vielleicht kann mit jemand helfen, wie ich den Stack im Textfeld untereinader ausgeben kann?
Im Voraus schon einmal Danke



Stack<double> operanden;
double operand1, operand2, result;

public MainWindow()
{
     InitializeComponent();
     operanden = new Stack<double>();
}

private void OnPlusIsClicked(object sender, RoutedEventArgs e)
{
    try
    {
       operand1 = operanden.Pop();
       operand2 = operanden.Pop();
     }
     catch (InvalidOperationException)
     {
        MessageBox.Show ( "not enough numbers in the stack" );
      }
result = operand1 + operand2;
txtDisplay.Text = result.ToString();
operanden.Push(result);
show_Stack();
}

private void OnEnterDownHandler(object sender, KeyEventArgs e)
{
    if (e.Key == Key.Return)
    {
       try
      {
         operanden.Push( double.Parse(txtDisplay.Text));
       }
     catch (FormatException)
     {
         MessageBox.Show("Please enter Numbers");
     }
    txtDisplay.Clear();
    show_Stack();
}
// Diese Methode soll den Inhalt des Stacks im Textfeld Stack
untereinander darstellen

private void show_Stack()
{
//txtStack.Text = txtStack.AppendText(operanden.Pop().ToString() /r/n);
}
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Lena2001 am .
liebe, lebe, lache
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16109

beantworten | zitieren | melden

Hallo,

bitte beachte [Hinweis] Wie poste ich richtig? und pack Dein Code in die BBCode-Tags.
Niemand hier mag Plaintext-formatierten Quellcode lesen ;-)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Lena2001
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Danke für den Hinweis.
Da ich Anfängerin im Programmieren bin, weiß ich noch nicht so genau wie ich meinen Code mit Code-Tags sinnvoll gliedere und welche Vorteile das bringt.
Ich habe meinen Code jetzt mit Tag versehen.
liebe, lebe, lache
private Nachricht | Beiträge des Benutzers
witte
myCSharp.de - Member



Dabei seit:
Beiträge: 966

beantworten | zitieren | melden

Hallo,

Stack<>.Pop solltest du für die Zwischenausgabe nicht verwenden weil der Eintrag ja dann aus dem Stack entfernt wird. Vllt ToArray() nehmen. Mit String.Join kannst du das dann in ein String umwandeln, vllt


var str = string.Join(", ", operanden.Select(p => p.ToString()).ToArray());
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von witte am .
private Nachricht | Beiträge des Benutzers
Lena2001
myCSharp.de - Member



Dabei seit:
Beiträge: 3

Themenstarter:

beantworten | zitieren | melden

Danke für den Tipp.
Werde ich gleich mal versuchen.
liebe, lebe, lache
private Nachricht | Beiträge des Benutzers