Autor Beitrag
Ritzeratze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mi 18.09.13 22:47 
Moinsen,

ich versuche mich gerade mit C#

Der Anwender wird aufgefordert 2 Werte einzugeben. Je nach Wert wird ein bestimmter Case abgearbeitet. Um jetzt nicht jeden Case den gelichen Salat zu schreiben, würde ich dieses gern in eine Methoden kippen, um so an geeigneter Stelle die Methode aufzurufen .

Also so etwa.
ausblenden 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:
double wert1 = 0;
double wert2 = 0
// .............
             switch (Auswahl)
             {
                case 'A':
                case 'a':
                   
        // Diesen Part möchte ich auslagern, so das ich hier später nur noch die Methode aufrufe: z.B. Eingabe();
        // Leider bekomme ich immer die Compiler Meldung (Überladen der Methode ...) 

                    Console.Write("Bitte geben Sie den ersten Wert ein: ");
                    wert1 = Convert.ToDouble(Console.ReadLine());

                    Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                    wert2 = Convert.ToDouble(Console.ReadLine());               

                    // .........
                    break;

                default:
                    // .........
             }


Kann mir jemand einen Tipp geben ?
Gruß
Ritze

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 18.09.13 22:56 
Wir könnten einfach die richtige Lösung posten das wär aber wenig hilfreich. Zeig uns denn Code denn du versuchst hast und der nicht funktioniert. Dann sagen wir dir wo da der Denkfehler liegt und du hast nicht nur die Lösung sondern vermutlich auch was gelernt.
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Do 19.09.13 22:34 
Hallo,
Danke für die Antwort. Den Code habe ich gestern Abend nach dem letzten Glas Rotwein wohl nicht mehr posten können :-)
Nach Beendigung der Rechneoperation soll der Anwender aufgeordert werden, ob er noch eine weitere Operation durchführen möchte.
Das klingt nach einer schönen do while Schleife. Allerdings weiß ich nicht genau wo ich diese setzen soll, weil ich die Fälle ja im CASE Fall behandel.

Gruss Ritzeratze


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:
      static void Benutzerwahl()
      {
          Console.WriteLine("Bitte die gewünschte Operation ein:\n\n ");
          Console.WriteLine("A ****** für  Addition");
      }

      /* Berechnungen */

      static double summe (double wert1, double wert2)
      {
          return (wert1 + wert2);
      }

      static void Main(string[] args)
      {
           //Variablendefinition
           double wert1 = 0;
           double wert2 = 0;
           char Programmwahl;
           

           Benutzerwahl();           
           Programmwahl = Convert.ToChar(Console.ReadLine());

           switch (Programmwahl)
               {
                   case 'A':
                   case 'a':    

                       Console.Write("\t\t Sie haben die Addition ausgewählt:\n\n");
                       Console.Write("Bitte geben Sie den ersten Wert ein: ");
                       wert1 = Convert.ToDouble(Console.ReadLine());

                       Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                       wert2 = Convert.ToDouble(Console.ReadLine());

                       Console.WriteLine(" Das Ergebnis der Berechnung ist {0}", summe(wert1, wert2));
                       break;                 

                   default:
                       Console.Write("Sie haben einen falschen Wert eingegeben.");
                       break;
               }


Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 19.09.13 23:20 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 21.09.13 09:32 
Hi,

vielen Dank für die Tipps.
Sobald die Berechnung durchgeführt und das Ergebnis angezeigt wurde, muss ja die Frage an den Anwender gestellt werden, ob er eine erneute Berechnung durhcführen möchte.
Das klappt auch soweit mit der do while Schleife. Allerdings sobald der Anwender mit 'j' bestätigt, erscheint die Benutzerauswahl. Er kann auch noch ein eine Auswahl treffen,
danach erscheint aber sofort die Zeile , "Drücken Sie eine beliebige Taste"....


Gruß
Ritze
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 21.09.13 19:01 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Sa 21.09.13 19:25 
Moin ,

OK hier der Code

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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Taschenrechner_2
{
    class Program
    {
        static void Konsolendesign()
        {
       
            /* ************************************************************
             * ********************                    ********************
             * ************************************************************
             * Author: Michael Suerstedt               Version1.1**********
             * ***********************************************************/


            Console.Title = "Taschenrechner mit Grundrechenarten ";

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.ForegroundColor = ConsoleColor.Yellow;

            Console.Clear();
       
        }

        static double summe(double wert1, double wert2)
        {
            return (wert1 + wert2);
        }

        static double multiplikation(double wert1, double wert2)
        {
            return (wert1 * wert2);
        }

        static double subtraktion(double wert1, double wert2)
        {
            return (wert1 - wert2);
        }

        static double division(double wert1, double wert2)
        {
            return (wert1 / wert2);
        }


        static void Main(string[] args)
        {
            char wahl;
            char choice;
            double wert1;
            double wert2;
            
            Konsolendesign();

            do
            {
                Console.WriteLine("\n\t\t Bitte wählen Sie eine Rechenart aus!");
                Console.WriteLine("\n\t\t\t A für Addition");
                Console.WriteLine("\n\t\t\t S für Subtraktion");
                Console.WriteLine("\n\t\t\t M für Multiplikation");
                Console.WriteLine("\n\t\t\t D für Division");
                Console.WriteLine("\n\t\t\t B für Beenden");
                wahl = Convert.ToChar(Console.ReadLine().ToUpper());

                switch (wahl)
                {
                    case 'A':
                        Console.WriteLine("Sie haben die Addition ausgewählt");

                        Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", summe(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                       
                        break;

                    case 'S':
                        Console.WriteLine("Sie haben die Subtraktion ausgewählt");
                         Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", subtraktion(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        Console.Clear();
                        break;
                    case 'M':
                        Console.WriteLine("Sie haben die Mutliplikation ausgewählt");
                         Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", multiplikation(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        Console.Clear();
                        break;

                    case 'D':
                        Console.WriteLine("Sie haben die Division ausgewählt");
                        Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", division(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        break;
                    
                    case 'B':
                        Console.WriteLine("Sie Beenden den Taschenrechner");
                        break;

                    default:
                        Console.WriteLine("Sie haben einen falschen Wert eingegeben");
                        break;
                }

                Console.Clear();
            } while (choice != 'j');

        }
    }
}
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4701
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 21.09.13 19:43 
Die Behandlung von choice ist etwas merkwürdig.

Erstmal wird das gezeigte nicht kompilieren da nicht jeder Pfad (in diesem Fall jeder case Zweig) auch choice etwas zuweist. Damit wird am Ende choice abgefragt obwohl choice nicht immer einen Wert hat. Das sollte dir der Compiler auch melden. Dann wird choice auch immer mit einem Aufruf von ToUpper gefüllt. Was da drin ist ist also, wenn es ein Buchstabe ist, immer groß du testest aber auf das kleine j.
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 21.09.13 19:48 
- Nachträglich durch die Entwickler-Ecke gelöscht -
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: So 22.09.13 01:16 
Moin ,

OK hier der Code

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:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Taschenrechner_2
{
    class Program
    {
        static void Konsolendesign()
        {
       
            /* ************************************************************
             * ********************                    ********************
             * ************************************************************
             * Author: Michael Suerstedt               Version1.1**********
             * ***********************************************************/


            Console.Title = "Taschenrechner mit Grundrechenarten ";

            Console.BackgroundColor = ConsoleColor.DarkBlue;
            Console.ForegroundColor = ConsoleColor.Yellow;

            Console.Clear();
       
        }

        static double summe(double wert1, double wert2)
        {
            return (wert1 + wert2);
        }

        static double multiplikation(double wert1, double wert2)
        {
            return (wert1 * wert2);
        }

        static double subtraktion(double wert1, double wert2)
        {
            return (wert1 - wert2);
        }

        static double division(double wert1, double wert2)
        {
            return (wert1 / wert2);
        }


        static void Main(string[] args)
        {
            char wahl;
            char choice;
            double wert1;
            double wert2;
            
            Konsolendesign();

            do
            {
                Console.WriteLine("\n\t\t Bitte wählen Sie eine Rechenart aus!");
                Console.WriteLine("\n\t\t\t A für Addition");
                Console.WriteLine("\n\t\t\t S für Subtraktion");
                Console.WriteLine("\n\t\t\t M für Multiplikation");
                Console.WriteLine("\n\t\t\t D für Division");
                Console.WriteLine("\n\t\t\t B für Beenden");
                wahl = Convert.ToChar(Console.ReadLine().ToUpper());

                switch (wahl)
                {
                    case 'A':
                        Console.WriteLine("Sie haben die Addition ausgewählt");

                        Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", summe(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                       
                        break;

                    case 'S':
                        Console.WriteLine("Sie haben die Subtraktion ausgewählt");
                         Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", subtraktion(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        Console.Clear();
                        break;
                    case 'M':
                        Console.WriteLine("Sie haben die Mutliplikation ausgewählt");
                         Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", multiplikation(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        Console.Clear();
                        break;

                    case 'D':
                        Console.WriteLine("Sie haben die Division ausgewählt");
                        Console.Write("Bitte geben Sie den ersten Wert ein: ");
                        wert1 = Convert.ToDouble(Console.ReadLine());

                        Console.Write("Bitte geben Sie den zweiten Wert ein: ");
                        wert2 = Convert.ToDouble(Console.ReadLine());

                        Console.WriteLine("\nDas Ergebnis der Berechnung ist {0}", division(wert1, wert2));
                        Console.WriteLine("Möchten sie eine weitere Berechnung durchführen? j / n");
                        choice = Convert.ToChar(Console.ReadLine().ToUpper());
                        break;
                    
                    case 'B':
                        Console.WriteLine("Sie Beenden den Taschenrechner");
                        break;

                    default:
                        Console.WriteLine("Sie haben einen falschen Wert eingegeben");
                        break;
                }

                Console.Clear();
            } while (choice != 'j');

        }
    }
}
Ritzeratze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 101



BeitragVerfasst: Mo 23.09.13 18:53 
Danke an allen für die Umfangreichen Informationen.

Hat mich einen großen Schritt vorangebracht.

Gruss Ritzeratze