Programmierproblem

  • geschlossen
  • C#

  • Die_Pest
  • 1543 Aufrufe 16 Antworten
  • Programmierproblem

    hi leute

    hab vor ein paar wochen mit dem buch " Jetz lerne ich visual c# 2008 "
    das programmieren angefangen...
    ich bin auch schon relativ weit gekommen
    jetzt hab ich einen kleinen versuch gestartet und angefangen einen kleinen taschenrechner zu programmieren (nur mit +, -, * und /)
    das ganze hab ich auf einer oberfläche mit visual c# versucht; das heißt:
    ein windows-forms fenster mit:
    -einer textbox für die erste zahl die der benutzer eingeben kann
    -einer zweiten textbox für die zweite zahl die der benutzer eingeben kann
    -einer combobox um das rechenzeichen anzugeben
    -und ein label um das ergebnis anzuzeigen

    jetzt hab ich eig nur noch probleme mit der combobox
    ich würde es gerne ungefähr in dem vormat angeben:

    if (rechenzeichen = +);
    ergebnis = ersteZahl + zweiteZahl

    nur die if anwendung in der form wird als fehler angesehen!
    wie ist das richtig geschrieben??

    vll kann mir jemand helfen...

    würdemkich sehr über eine antwort freuen:D

    mfg die_pest
  • Hi Pest,

    Welche Entwicklungsumgebung nutzt du denn zum C# programmieren ?
    Falls du nicht MS VisualStudio verwendest, schau mal nach der VisualStudio ExpressEdition 2008 für C#.
    Damit passieren dir solche Syntax-Fehler nicht, da man dort, wenn du z.B.

    "if"

    eingibst und zweimal TAB drückst, dir praktisch das ganze if-Konstrukt gesetzt wird. So sieht man leicht die Syntax. Außerdem ist eine gute Seite zum nachschauen auch die Microsoft Seite zu C#.

    Gruß Ajur!

    ps: Wollte jetzt keine Werbung für MS machen, sondern Dir nur mitteilen, dass du damit kostenlos eine gute Entwicklungsumgebung erhälst.
  • ja das programm benutz ich ja auch;)
    nur leider blick ich immernoch nicht ganz durch!:confused:
    ich hab des jetzt mal vereinfacht und als console-anwendung gemacht!
    jetzt sieht der code ungefähr so aus...

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.Linq;
    4. using System.Text;
    5. namespace Rechner
    6. {
    7. class Program
    8. {
    9. static void Main(string[] args)
    10. {
    11. double ersteZahl;
    12. double zweiteZahl;
    13. bool rechenzeichen;
    14. double ergebnis;
    15. Console.Write("ersteZahl eingeben:");
    16. ersteZahl = Convert.ToDouble(Console.ReadLine());
    17. Console.Write("zweiteZahl eingeben:");
    18. zweiteZahl = Convert.ToDouble(Console.ReadLine());
    19. Console.Write("Rechenzeichen eingeben:");
    20. rechenzeichen = Convert.ToBoolean(Console.ReadLine());
    21. if (rechenzeichen == "+") ;
    22. {
    23. ergebnis = ersteZahl + zweiteZahl;
    24. Console.WriteLine("Ergebnis:" + ergebnis);
    25. }
    26. if (rechenzeichen == "-") ;
    27. {
    28. ergebnis = ersteZahl - zweiteZahl;
    29. Console.WriteLine("Ergebnis:" + ergebnis);
    30. }
    31. if (rechenzeichen == "*") ;
    32. {
    33. ergebnis = ersteZahl * zweiteZahl;
    34. Console.WriteLine("Ergebnis:" + ergebnis);
    35. }
    36. if (rechenzeichen == "/") ;
    37. ergebnis = ersteZahl / zweiteZahl;
    38. Console.WriteLine("Ergebnis:" + ergebnis);
    39. }
    40. }
    Alles anzeigen

    naja nur sind leider immernoch fehler drin die mir visual c# express anzeigt
    zb:
    Fehler 1 Der Operator "==" kann nicht auf Operanden vom Typ "bool" und "string" angewendet werden.

    doch ich versteh ehrlich gesagt nicht wie ich sie ausmerzen kann!
    also wenn jemand lust hat..!?;)
    mfg die_pest

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword ()

  • Also als erstes mal:
    Benutze doch bitte den Code Tag, so sieht doch kein Schwein durch!

    Zum String bool Problem:

    bool rechenzeichen;

    Das bedeutet rechenzeichen ist entweder true oder false, aber niemals "-" oder aehnliches.
    Und der Fehler kommt, da man einen bool nicht mit einem String vergleichen kann, was ja auch keinen Sinn macht.

    Das soll wohl heissen:

    Quellcode

    1. String rechenzeichen;


    Jetzt kann rechenzeichen jeder String sein: "-", "+", "blubb", "\"89479856ashjgsd&*(^$#%\\#$", ... .
    Wo ist der Discord Server
  • danke für deine verbesserung! es geht!
    und sry dass ichs einfach so reingeschrieben hab!
    beimnächsten mal wirds übersichtlicher!;)

    mfg die_pest

    naja und um auf meinen kleinen erfolg aufzubauen hab ich jetzt versucht das auf eine oberfläche anzuwenden...doch das is leider auch noch nicht ganz ausgefeilt!:(

    ich stell den code einfach mal rein, wenn jemand interesse dran hat mir zu helfen, kann er ja mal ne antwort schreiben;)

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. double ersteZahl;
    18. double zweiteZahl;
    19. double ergebnis ;
    20. String rechenzeichen;
    21. private void button1_Click(object sender, EventArgs e)
    22. {
    23. double textBox1 = ersteZahl;
    24. double textBox2 = zweiteZahl;
    25. String comboBox1 = rechenzeichen ;
    26. if (rechenzeichen == "+") ;
    27. {
    28. ergebnis = ersteZahl + zweiteZahl;
    29. Double label2 = ergebnis;
    30. }
    31. if (rechenzeichen == "-") ;
    32. {
    33. ergebnis = ersteZahl - zweiteZahl ;
    34. double label2 = ergebnis;
    35. }
    36. if (rechenzeichen == "*") ;
    37. {
    38. ergebnis = ersteZahl * zweiteZahl;
    39. double label2 = ergebnis;
    40. }
    41. if (rechenzeichen == "/");
    42. {
    43. ergebnis = ersteZahl / zweiteZahl;
    44. double label2 = ergebnis;
    45. }
    46. }
    47. }
    48. }
    Alles anzeigen


    mein problem ist jetzt dass ich keine möglichkeit finde das ergebnis im label auszugeben! Geht das überhaupt, wenn ja wie ?
    wenn nein was sollte man sonst verwenden um das ergebnis anzeigen zu lassen?
    mfg die_pest

    kann mir da wirklich niemand helfen?
    wär super nett!;)
    mfg die_pest

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von Broken Sword () aus folgendem Grund: Regeln lesen! Pushpost erst nach 7 Tagen!

  • Also...
    Du solltest nochmal mehr lesen...
    Die Textboxen heissen Textboxen weil Sie Texte enthalten.
    Das gleiche gilt aber auch für ComboBox und Label

    PHP-Quellcode

    1. textBox1.Text = "1"; // Textwert setzen
    2. string wert1 = textBox1.Text; // Textwert aus textBox1 lesen
    3. double d1 = Convert.ToDouble(wert1); // Umwandeln in double



    Grüsse
    biernase
  • Und um dein Ergebnis in ein Label zu bekommen musst du:

    Quellcode

    1. label1.Text = ergebnis.ToString()


    aufrufen.

    Generell würde ich dir empfehlen die Rechenzeichen in einer Enumeration zu speichern, das erleichtert spätere Abfragen.
    Aber fang erstmal langsam an, das Kapitel enum steht sicher erst später an :)
  • vielen dank für eure anmerkungen... ich werd des gleich mal einbauen
    und mal schauen was dabei rauskommt!:D
    vll krieg ich des programm dann endlich mal richtig zum laufen;)
    falls nich weiß ich ja wo ich nachfragen kann:p

    mfg die_pest

    ---

    hallo leute...
    ich hab euren ratschlag jetzt befolgt und einfach mal um einiges weiter gelesen in meinem buch!;)
    nur leider bin ich jetzt fast durch bin aber immernoch nicht in der lage die lösung für mein problem zu finden!:(
    ich hab jetzt versucht durch ein button click mein ergebnis in ein label auszugeben doch es funktioniert nichts!
    vll könnt ihr was in dem code erkennen?
    achja und ich hab auch die vorher gegebenen beispiele schon versucht,
    die haben leider auch nicht funktioniert!

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. string wert1;
    17. wert1 = textBox1.Text;
    18. string wert2;
    19. wert2 = textBox2.Text;
    20. string ergebnis = label2.Text;
    21. string rechenzeichen;
    22. rechenzeichen = comboBox1.Text;
    23. if (rechenzeichen == "+")
    24. {
    25. ergebnis = "wert1 + wert2";
    26. }
    27. if (rechenzeichen == "-")
    28. {
    29. ergebnis = "wert1 - wert2";
    30. }
    31. if (rechenzeichen == "*")
    32. {
    33. ergebnis = "wert1 * wert2";
    34. }
    35. if (rechenzeichen == "/")
    36. {
    37. ergebnis = "wert1 / wert2";
    38. }
    39. }
    40. private void button1_Click(object sender, EventArgs e)
    41. {
    42. Show(label2); //falsch! Was muss man verwenden?
    43. }
    Alles anzeigen


    also würdemichüber hilfe freuen!

    mfg die_pest

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Broken Sword ()

  • Also in "public Form1()" solltest Du nur die Initialiserugen durchführen...
    In "private void button1_Click(object sender, EventArgs e)"
    wird dann zur Laufzeit auf den Klick auf den Button reagiert...
    Da sollten dann Werte ausgelesen und Berechnungen ausgeführt werden :)
    Und nochmal zur Berechnung:
    Im Textfeld stehen Texte.
    Zum Rechnen musst Du in ein "Rechen-Format" umwandeln .
    Zum Anzeigen musst Du wieder ins Textformat umwandeln...
    Lesen...

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von biernase ()

  • also ich habe ein weiteres mal versucht deine vorschläge einzubauen
    und es funktioniert jetzt auch fast so wie es soll!
    nur dass jetzt im label nicht das ergebnis ausgegeben wird sondern
    bei "+" zb:

    ergebnis = wert1 + wert2
    statt zb 8 oder so

    also welche kleine änderung fehlt denn jetzt noch?

    Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void button1_Click(object sender, EventArgs e)
    18. {
    19. textBox1.Text = "1";
    20. string wert1 = textBox1.Text;
    21. double d1 = Convert.ToDouble(wert1);
    22. textBox2.Text = "2";
    23. string wert2 = textBox2.Text;
    24. double d2 = Convert.ToDouble(wert2);
    25. label2.Text = "3";
    26. string ergebnis = label2.Text;
    27. double d3 = Convert.ToDouble(ergebnis);
    28. string rechenzeichen = textBox3.Text;
    29. if (rechenzeichen == "+")
    30. {
    31. ergebnis = "wert1 + wert2";
    32. }
    33. if (rechenzeichen == "-")
    34. {
    35. ergebnis = "wert1 - wert2";
    36. }
    37. if (rechenzeichen == "*")
    38. {
    39. ergebnis = "wert1 * wert2";
    40. }
    41. if (rechenzeichen == "/")
    42. {
    43. ergebnis = "wert1 / wert2";
    44. }
    45. label2.Text = ergebnis.ToString();
    46. }
    47. }
    48. }
    Alles anzeigen


    mfg die_pest;)
  • Du solltest nochmal ein paar Kapitel zurück gehen und dir so grundlegende Sachen wie Datentypen genau durchlesen.
    Mit Strings kann man beispielsweise nicht rechnen :)

    PHP-Quellcode

    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.Linq;
    7. using System.Text;
    8. using System.Windows.Forms;
    9. namespace WindowsFormsApplication1
    10. {
    11. public partial class Form1 : Form
    12. {
    13. public Form1()
    14. {
    15. InitializeComponent();
    16. }
    17. private void button1_Click(object sender, EventArgs e)
    18. {
    19. textBox1.Text = "1";
    20. double d1 = Convert.ToDouble(textBox1.Text);
    21. textBox2.Text = "2";
    22. double d2 = Convert.ToDouble(textBox1.Text);
    23. label2.Text = "3";
    24. double d3 = 0;
    25. string rechenzeichen = textBox3.Text;
    26. if (rechenzeichen == "+")
    27. {
    28. d3 = d1 + d2;
    29. }
    30. if (rechenzeichen == "-")
    31. {
    32. d3 = d1 - d2;
    33. }
    34. if (rechenzeichen == "*")
    35. {
    36. d3 = d1 * d2;
    37. }
    38. if (rechenzeichen == "/")
    39. {
    40. d3 = d1 / d2;
    41. }
    42. label2.Text = d3.ToString();
    43. }
    44. }
    45. }
    Alles anzeigen
  • ja ich weiß langsam nervts ein bissal:löl:
    mich aber auch!!;)
    es besteht immernoch das problem dass die zuweißung nicht stimmt!
    der code:

    PHP-Quellcode

    1. textBox1.Text = "1";
    2. double d1 = Convert.ToDouble(textBox1.Text);
    3. textBox2.Text = "2";
    4. double d2 = Convert.ToDouble(textBox2.Text);
    5. label2.Text = "3";
    6. double d3 = 0;


    setzt immer die erste Zahl die man als benutzer eingeben soll, automatisch auf 1!
    und die 2. zahl immer auf 2, auch automatisch!
    nur das label gibt den richtigen wert aus, aber halt nur für die zahlen 1 und 2!:confused:
    was kann man machen?
    mfg die_pest