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 😁
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 - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
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 😁
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());
Danke für den Tipp.
Werde ich gleich mal versuchen.
🙂 liebe, lebe, lache 😁