Laden...

Stack im Textfeld ausgeben

Erstellt von Lena2001 vor 3 Jahren Letzter Beitrag vor 3 Jahren 451 Views
L
Lena2001 Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren
Stack im Textfeld ausgeben

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

🙂 liebe, lebe, lache 😁

16.828 Beiträge seit 2008
vor 3 Jahren

Hallo,

bitte beachte [Hinweis] Wie poste ich richtig? und pack Dein Code in die BBCode-Tags.
Niemand hier mag Plaintext-formatierten Quellcode lesen 😉

L
Lena2001 Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

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 😁

W
955 Beiträge seit 2010
vor 3 Jahren

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

L
Lena2001 Themenstarter:in
3 Beiträge seit 2021
vor 3 Jahren

Danke für den Tipp.
Werde ich gleich mal versuchen.

🙂 liebe, lebe, lache 😁