Autor |
Beitrag |
Ritzeratze
Beiträge: 101
|
Verfasst: 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.
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': 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 Th69: C#-Tags hinzugefügt
|
|
Ralf Jansen
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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
Beiträge: 101
|
Verfasst: 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
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"); }
static double summe (double wert1, double wert2) { return (wert1 + wert2); }
static void Main(string[] args) { 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 Th69: C#-Tags hinzugefügt
|
|
Frühlingsrolle
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 19.09.13 23:20
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Ritzeratze
Beiträge: 101
|
Verfasst: 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
|
Verfasst: Sa 21.09.13 19:01
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Ritzeratze
Beiträge: 101
|
Verfasst: Sa 21.09.13 19:25
Moin ,
OK hier der Code
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() {
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
Beiträge: 4705
Erhaltene Danke: 991
VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
|
Verfasst: 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
|
Verfasst: Sa 21.09.13 19:48
- Nachträglich durch die Entwickler-Ecke gelöscht -
|
|
Ritzeratze
Beiträge: 101
|
Verfasst: So 22.09.13 01:16
Moin ,
OK hier der Code
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() {
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
Beiträge: 101
|
Verfasst: Mo 23.09.13 18:53
Danke an allen für die Umfangreichen Informationen.
Hat mich einen großen Schritt vorangebracht.
Gruss Ritzeratze
|
|