Autor Beitrag
Mama08
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 15.11.08 13:35 
Hilfe,

bin wiedereinsteiger. Hatte ein Semester lang C# in der Fachhochschule und versuche grad wieder einzusteigen.
Will einen Taschenrechner programmieren und bis jetzt funktioniert alles. Hab ein Hauptprogramm mit verschiedenen Cases (add, sub, div und multi) und die jeweiligen Methoden sind in klassen (also add is eine klasse und der rest in einer anderen) Bis jetzt funktioniert alles (hab bei div auch eine try/catch anweisung für divbyzero)
Aber leider kann ich immer nur eine anweisung/rechnung durchführen...

schon bei der ersten abfrage (drücke 1. für add, 2. für sub...) kann ich nur einmal auswählen, d.h. wenn ich mich einmal vertippe, dann schreibt er "falsche eingabe" (mein default-wert) und dann kann ich noch einmal was eingeben und dann beendet er...
lange rede kurzer sinn:
wie programmier ich das ganze jetzt sinnvoll in eine schleife rein, also dass ich z.b. nach jeder rechnung wieder ins hauptmenü komme oder solange 2 zahlen addieren kann, bis ich z.B. x drücke oder sowas?!

Sorry für's viele blabla, hoffe es is halbwegs verstädnlich

danke schon mal, lg


Zuletzt bearbeitet von Mama08 am Sa 15.11.08 14:33, insgesamt 1-mal bearbeitet
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 15.11.08 13:50 
Hallo und :welcome:

bitte ändere zunächst den Titel: Du kannst das Problem etwas genauer ankündigen, z.B. "Problem Schleife bei Taschenrechner als Konsolenanwendung". Man sollte gleich auf die eigentliche Frage hingewiesen werden.

Dann ist es wohl eher Quatsch, die einzelnen Methoden in verschiedene Klassen zu setzen. Wenn Du die Berechnung schon in eine eigene Klasse auslagern willst, dann wäre es eher eine Klasse Calculation mit Eingangs- und Ausgangswerten und allen Berechnungen.

Eigentlich ist auch das überdimensioniert, weil nach dem Ergebnis einer Berechnung diese Rechnung nicht mehr von Bedeutung ist, also aufgelöst werden kann; es handelt sich doch maximal um (bei Grundrechenarten) vier Methoden - auch die Math-Klasse benutzt ausschließlich statische Methoden (und ist selbst ebenfalls static).

Zum Hauptproblem kann ich gar nichts sagen: Du solltest den betreffenden Code zeigen, damit uns klar wird, wie Du die Schleife steuern wolltest, und wir die Problemstelle finden können.

Gruß Jürgen
Mama08 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 15.11.08 13:58 
Sorry, wg. Titel. Wollte eh noch was dazuschreiben-hab aber dann vergessen. Es geht ja hauptsächlich um's programmieren und ausprobieren (darum auch in extra-klasse) damit ich wieder rein komm..

Programm:

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Herzlich Willkommen!");
            Console.WriteLine("Das ist ein Taschenrechner!Drücken Sie: ");
            Console.WriteLine("1 für Addition");
            Console.WriteLine("2 für Subtraktion");
            Console.WriteLine("3 für Division");
            Console.WriteLine("4 für Multiplikation");


#region SWITCH

            int auswahl = Convert.ToInt32(Console.ReadLine());

            switch (auswahl)
            {
                case 1:
                    Console.WriteLine("Addition");
                    Addition Plusrechnung = new Addition();
                    Plusrechnung.Add();
                    
                    break;
                case 2:
                    Console.WriteLine("Subtraktion");
                    subdivmulti sub = new subdivmulti();
                    sub.subtraktion();
                    break;
                case 3:
                    Console.WriteLine("Division");
                    subdivmulti div = new subdivmulti();
                    div.division();
                    break;

                case 4:
                    Console.WriteLine("Multiplikation");
                    subdivmulti multi = new subdivmulti();
                    multi.mulitiplikation();
                    break;
                default:
                    Console.WriteLine("Falsche Eingabe");
                    break;
            }
            
#endregion

            Console.ReadLine();

        }



Brauchst du die 2 Klassen auch???

Moderiert von user profile iconUGrohne: C#-Tags hinzugefügt.
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Sa 15.11.08 15:51 
Dass du eine Schleife brauchst, hast du ja schon erkannt. Der Ablauf sollte dann doch etwa so aussehen:
ausblenden Quelltext
1:
2:
3:
Solange kein Abbruch:
  Menü anzeigen
  Gewählte Rechenart ausführen

Und noch ein Hinweis mehr: Die obige Schleife könntest du auch so umschreiben:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
Wiederhole:
  Menü anzeigen
  Falls "Abbruch" gewählt
    Methode verlassen
  Sonst
    Rechnen

_________________
>λ=
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Sa 15.11.08 16:18 
Sebastians Vorschlag möchte ich so ergänzen:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
Wiederhole:
  Menü anzeigen
  Abfrage nach Operator oder Abbruch 
  Falls "Abbruch" gewählt
    Methode verlassen
  Sonst
    erste Zahl abfragen
    zweite Zahl abfragen
    Rechnen

Damit und mit Deinem anderen Code halte ich das Verfahren mit weiteren Klassen in der Tat für abwegig. An der Stelle "Rechnen" kommt die switch-Anweisung und dazu nur jeweils eine einzige Methode; wozu und wie soll das in zwei Klassen ausgelagert werden? Und warum willst Du ausgerechnet Add sowie Sub+Div+Multi zusammenfassen und nicht wenigstens Punkt- und Strichrechnung?

Wenn es Dir wirklich um das Zusammenspiel mehrerer Klassen geht, dann such Dir ein besser geeignetes Projekt (im Forum "Projekte" findest Du sicher viele Anregungen). Und was meinst Du mit der Frage "Brauchst du die 2 Klassen auch???" Du benutzt drei Klassen, nicht zwei; wenn die Frage an mich gerichtet war: nein, ich brauche nur die Klasse Program.

Ergänzend möchte ich noch auf Folgendes hinweisen: Statt Convert.ToInt32 sollten besser Parse, ParseExact, TryParse, TryParseExact der int-Klasse verwendet werden. Statt Console.ReadLine gibt es auch Console.ReadKey.

Gruß Jürgen
Mama08 Threadstarter
Hält's aus hier
Beiträge: 3



BeitragVerfasst: Sa 22.11.08 20:38 
vielen dank (auch an Sebastian)

sorry, dass ich solange ned geschrieben hab, aber dachte, ich hab keine aw bekommen (weil das Mail irgendwie im Spam gelandet is...)
Werd eure tipps mal umsetzen...

Danke und vielleicht bis bald (spät. wenn ich wieder ned weiterkomm ;-))

lg Carina