Entwickler-Ecke
Basistechnologien - Anfängerfrage zu Methoden
I027 - Di 29.05.12 16:32
Titel: Anfängerfrage zu Methoden
Hallo zusammen,
ich habe vor kurzem angefangen mich als Programieranfänger an C# als Einstieg heranzuwagen. Ich habe mir nun eine kleine Konsolenanwendung geschrieben, die mir aus 2 Zahlen eine Berechnung machen soll. Darin enthalten ist folgenden Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| static int eingabeZahl() { int i = 1; while ( i <= 2 ) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); break; } i++; int eingegebeneZahl = System.Convert.ToInt32(Console.ReadLine()); return eingegebeneZahl; } |
Die Methode soll wenn Sie das erste mal ausgeführt wird, für i den Wert 1 annehmen und beim zweiten Aufruf der Methode den Wert 2. Aktuell ist es so, das ich immer die Ausgabe "Bitte geben Sie die 1. Zahl ein" bekomme und nicht wie gewünscht beim zweiten Aufruf "Bitte geben Sie die 2. Zahl ein".
Kompletter Code:
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { System.Console.Title = "NICO's Taschenrechner";
int ergebnis = 0;
Console.WriteLine("Was möchten Sie tun? - Bitte Zahl Eingeben!:"); Console.WriteLine("Addieren(1)"); Console.WriteLine("Subtrahieren(2)"); Console.WriteLine("Multiplizieren(3)"); Console.WriteLine("Dividieren(4)");
int eingabe = System.Convert.ToInt32(Console.ReadLine());
int zahl1 = eingabeZahl(); int zahl2 = eingabeZahl(); if (eingabe == 1) { ergebnis = zahl1 + zahl2; } else if (eingabe == 2) { ergebnis = zahl1 - zahl2; } else if (eingabe == 3) { ergebnis = zahl1 * zahl2; } else if (eingabe == 4) { ergebnis = zahl1 / zahl2; } else { Console.WriteLine("Ungültige Eingabe!"); }
Console.WriteLine("Das Ergebnis ist: " + ergebnis);
Console.ReadLine(); } static int eingabeZahl() { int i = 1; while ( i <= 2 ) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); break; } int eingegebeneZahl = System.Convert.ToInt32(Console.ReadLine()); i++; return eingegebeneZahl; } } } |
Ich hoffe ich konnte einigermaßen klar machen, was ich machen möchte
Moderiert von
Th69: Topic aus WinForms verschoben am Di 29.05.2012 um 21:11
Christian S. - Di 29.05.12 16:47
Hallo und :welcome:!
Das i++ steht nicht innerhalb der Schleife :-)
Grüße,
Christian
Th69 - Di 29.05.12 17:36
Hallo,
auch das alleine wird nicht helfen, denn die Schleife ist wegen dem
break so auch ziemlich sinnlos.
Besser ist es den Index als Parameter zu übergeben:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| static int eingabeZahl(int index) { Console.WriteLine("Bitte geben Sie die " + index + ". Zahl ein");
} |
Palladin007 - Di 29.05.12 20:09
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| static int eingabeZahl() { int i = 1; while ( i <= 2 ) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); break; } i++; int eingegebeneZahl = System.Convert.ToInt32(Console.ReadLine()); return eingegebeneZahl; } |
i wird hier immer als 1 fest gelegt und das wird sich auch nicht ändern.
Entweder, du gibst i als Parameter der Methode, oder du erstellt eine Klasse mit einer globalen Variable i.
Die erst Variante ist in diesem Fall sinnvoller.
Die while-Schleife "missbrauchst" du hier als if-Abfrage.
Die Schleife soll immer so lange laufen, bis i nicht mehr kleiner oder gleich 2 ist, da du die Schleife aber sofort abbrichst, läuft die sowieso nicht weiter, egal was für ein Wert i hat.
Es funktioniert zwar, ist aber schlecht programmiert, deshalb formuliere es so:
C#-Quelltext
1: 2: 3: 4:
| if (i <= 2) { Console.WriteLine("Bitte geben Sie die " + i + ". Zahl ein"); } |
Das hat den selben Effekt und ist auch leichter zu verstehen, nämlich so:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| WENN (Bedingung) { Tue etwas } SONST { Tue etwas } |
Also im Endeffekt so:
C#-Quelltext
1: 2: 3: 4: 5: 6:
| if (Bedingung) { } else { } |
Das i++ steht da auch sinnlos rum.
Wenn es einen Effekt haben soll, dann muss es in der Schleife (ohne break) stehen, aber dann zählt sie einfach so und es wird keine Eingabe abgefragt. Daher kann das eigentlich ganz verschwinden.
Der Rest ist soweit ok.
Zu deinem Programm:
Dort ist bisher alles korrekt. Mein erstes Rechner-Programm habe ich allerdings anders geschrieben und zwar habe ich für jede Operation eine Methode erstellt, die sowohl Eingabe, als auch Berechnung erledigt.
Das hat den Vorteil, dass ich für jede Operation einen passenden Text angeben kann, wie z.B. "Geben sie bitte den ersten Summanden ein:"
Deine Variante geht aber auch, allerdings musst du die Methode da zwei mal aufrufen.
Wenn ich eine solche Methode schreibe, dann würde ich das wie folgt machen:
Eine Zähl-Schleife zählt einfach von 1 bis 2. Die Syntax sieht so aus:
C#-Quelltext
1: 2: 3:
| for (int i = START; i < Start; i++) { } |
i muss dabei kein integer sein, allerdings ist das die hauptsächliche Verwendungsart.
Danach steht die Bedingung, die angibt, bis wann gezählt wird. Es ist egal, was da steht, es muss aber eine Bedingung sein und deinen Ansprüchen genügen. Pass dabei auf, dass du keine Endlos schleife erstellst.
Und als letztes steht, wie gezählt wird. Wenn du schreibst i = i + 2 dann zählt die Schleife in zweier-Schritten. i = i + 1 ist das gleiche, wie i++.
Du erstellst also eine Schleife, die bei 0 beginnt und bei solange zählt, wie i kleiner 2 ist.
Und dazwischen fügst du dann deinen Text ein, der ausgegeben werden soll.
Warum die Schleife bei 0 beginnt und nur bis 1 zählen darf, kommt gleich.
Die Zahlen müssen aber auch noch gespeichert werden und das würde ich mit einem Array machen.
Wenn du Arrays noch nicht kennst, eine kleine Erklärung:
Ein Array ist eine Sammlung von Variablen mit dem gleichen Typ.
Die Syntax sieht so aus:
C#-Quelltext
1:
| TYP[] VariablenName = new TYP[LängeDesArrays]; |
In deinem Fall reicht ein Array vom Typ i und der Länge 2, also das:
C#-Quelltext
1:
| int[] zahlen = new int[2]; |
Da passen nun zwei Zahlen rein.
Aufgerufen werden sie so:
Damit kannst du dann die Variable ändern oder ausgeben lassen.
Was das nun bringt:
Du kannst dieses Array als ganzes ausgeben und im eigentlichen Programm ganz einfach abfragen.
Allerdings musst du dabei beachten, dass der Computer immer mit 0 anfängt, zu zählen.
Wenn du zwei Elemente hast, gibt es also entweder zahlen[0] oder zahlen[1].
Was du also machst, ist folgendes:
C#-Quelltext
1: 2: 3: 4: 5:
| for (int i = 0; i < 2; i++) { Console.WriteLine("Geben sie die " + (i + 1) + "te Zahl ein:"); zahlen[i] = Convert.ToInt32(Console.ReadLine()); } |
Da hat die Schleife zwei Aufgaben:
1. Zeigen, welche Zahl gesucht ist
2. Das Array an der richtigen Stelle mittels Index aufrufen.
Im Text hab ich (i + 1) geschrieben, weil der PC ja bei 0 beginnt, zu zählen, wir aber bei 1.
Nun wird als zwei mal gefragt, welche Zahl. Dabei wird gezeigt, welche Zahl gebraucht wird und die eingeben Zahl wird in ein Array gespeichert.
Dieses Array müssen wir dann noch mit return zurück geben (vorher noch den Rückgabetyp auf int[] setzen) und können die Zahlen dann auswerte. Beispiel:
C#-Quelltext
1:
| ergebnis = zahlen[0] + zahlen[1]; |
Die komplette Methode sieht also so aus:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| static int[] GetNumbers() { int[] zahlen = new int[2];
for (int i = 0; i < 2; i++) { Console.WriteLine("Geben sie die " + (i + 1) + "te Zahl ein:"); zahlen[i] = Convert.ToInt32(Console.ReadLine()); }
return zahlen; } |
Im Programm sieht das dann so aus:
C#-Quelltext
1: 2:
| int[] zahlen = GetNumbers(); ergebnis = zahlen[0] + zahlen[1]; |
Hab jetzt mehr geschrieben, als nötig, aber gerade Arrays sind ständig sehr wichtig in der Programmierung, und alles andere, was ich erklärt hab, auch, deshalb hab ich mir mal die Arbeit gemacht^^
Lies das Buch:
http://openbook.galileocomputing.de/visual_csharp_2010/index.htm
Was da nicht drin steht, brauchst du auch nicht^^
Ist kostenlos und sehr gut erklärt, eigentlich ein Buch, was neben sehr guten Erklärungen und ausreichend Grundwissen gleich noch Beispiele liefert.
Zu Kaufen gibts das auch, dann hast du das halt als Buch mit CD, auf der die Programme sind, aber ich habs bis jetzt noch nicht gebraucht.
Wenn du also wirklich programmieren lernen willst, lies das. Es liest sich gut, hätte ich auch erst nicht gedacht^^
Ach und noch was:
Ist das nicht das falsche Forum für so Fragen? ^^
Solche Fragen bitte zukünftig hier rein:
http://www.c-sharp-forum.de/forum_Basistechnologien_82.html
ok?
I027 - Mi 30.05.12 08:28
Wow, vielen lieben Dank für die tollen und ausführlichen Antworten. Ich werde das Ganze mal mit Hilfe eurer Vorschlägen versuchen zu "optimieren" und werde dann den kompletten Code nochmal posten. :zustimm:
Grüße Nico
I027 - Mi 30.05.12 09:40
So, habe das Ganze jetzt mal entsprechen mit euren Vorschlägen bearbeitet und mit Kommentaren versehen. In den Kommentaren habe ich es so hingeschrieben wie ich es verstanden habe, vielleicht könnt ihr da nochmal drüber schauen ;-).
Im Nächsten Schritt werde ich dann mal wie von Paladin700 vorgeschlagen für jede Berechnung eine eigene Methode erstellen.
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { System.Console.Title = "NICO's Taschenrechner";
int ergebnis = 0;
Console.WriteLine("Was möchten Sie tun? - Bitte Zahl Eingeben!:"); Console.WriteLine("Addieren(1)"); Console.WriteLine("Subtrahieren(2)"); Console.WriteLine("Multiplizieren(3)"); Console.WriteLine("Dividieren(4)");
int eingabe = System.Convert.ToInt32(Console.ReadLine());
int[] meineZahlen = eingabeZahlen(); if (eingabe == 1) { ergebnis = meineZahlen[0] + meineZahlen[1]; } else if (eingabe == 2) { ergebnis = meineZahlen[0] - meineZahlen[1]; } else if (eingabe == 3) { ergebnis = meineZahlen[0] * meineZahlen[1]; } else if (eingabe == 4) { ergebnis = meineZahlen[0] / meineZahlen[1]; } else { Console.WriteLine("Ungültige Eingabe!"); }
Console.WriteLine("Das Ergebnis ist: " + ergebnis);
Console.ReadLine(); } static int[] eingabeZahlen() { int[] zahlen = new int[2]; for (int i = 0; i < 2; i++) { Console.WriteLine("Bitte geben sie die " + (i + 1) + ". Zahl ein"); zahlen[i] = System.Convert.ToInt32(Console.ReadLine()); } return zahlen; } } } |
Palladin007 - Mi 30.05.12 17:05
Stimmt soweit. Aber das war ja hauptsächlich nur kopieren^^
Ich kann hier ja gleich mal einen kleinen Mini-Crash-Kurs aufziehen und dann fang ich gleich mal so an:
- Sorge dafür, dass die Eingabe immer Fehlerlos von Statten geht. Wenn du einen Buchstaben eingibst, würde das bei der Eingabe grundsätzlich zum Absturz des Programms führen.
Tipp: Schu nicht, ob die richtige Zahl, sondern das richtige Zeichen eingegeben wurde.
- Sorge dafür, dass das Programm nicht nach jeder Anwendung neu gestartet werten muss.
Tipp: Schau dir dazu die do-while-Schleife an, die macht genau das, wenn du weißt, wie ^^
- Die Überprüfung, welche Option gewählt wurde, lässt sich viel schöner gestalten und ist auch einfacher, zu erweitern, wenn du die switch-Anweisung nutzt. Die ist deiner if-else-Variante im Grunde um nix überlegen, ist (meiner Meinung nach) aber übersichtlicher und lässt sich deutlich einfacher erweitern. Außerdem erspart die (besonders im Zusammenhang mit Visual Studio) bei der Arbeit mit Enumerationen (Klassen-ähnliche Sammlungen von ganz einfachen Werten. Kommt später noch) eine ganze Menge Schreibarbeit. Sprich: Visual Studio schreibt für dich ^^
- Schaffst du es, dass, egal was passiert, das Konsolen-Fenster immer schön gestaltet bleibt? Titel reicht da erst mal, aber der muss immer oben sein und alles unnütze soll gelöscht werden.
Tipp: Für die Kopfzeile ist ne Methode, die das schreibt, ganz praktisch. Und die Methode Console.Clear() löscht den Fenster-Inhalt.
Als Beispiel:
C#-Quelltext
1:
| oOo...Kleiner Rechner...oOo |
Denk mal eine Weile darüber nach.
Das sind alles ganz einfache Aufgaben und eigenen sich besonders gut zum üben der Syntax von C# und zu verstehen, wie diese Sprache arbeitet. Denn beim Programmieren kannst du nicht gerade aus denken, wie im realen Leben, du musst abstrakt denken und verstehen, wie der Compiler alles versteht. Wenn du dann noch die Objektorientierte Programmierung gut beherrschst, stehen dir im Prinzip alle Türen offen. ^^
Ein Hinweis: Ein Freund von mir ist ziemlich fix im Umgang mit Webdesign, also HTML, PHP, CSS und auch serverbezogene Datenbanken. Er ist gerade erst von der Schule runter und die Arbeitgeber reißen sich um ihn. ^^
Gute Programmierer, die nebenbei noch jung und lernwillig sind (und sich manipulieren lassen) sind nun mal rar^^
Wenn du vor hast, dich selbstständig zu machen, dann kann man damit auch eine gaaaaanze Menge Geld machen, voraus gesetzt, die Firmen wissen, dass du gut bist.
Also häng dich rein, es schadet nicht, liefert Grundwissen über praktisch alle Software-Bereiche (hab ne grobe Theorie, wie Skyrim programmiert wurde :D), du förderst logisches Denken und auch die Fähigkeit, abstrakte und teilweise sehr komplizierte Sachverhalte zu verstehen, zu analysieren und damit zu arbeiten, etc.
Ach ja, das lese ich grad:
http://openbook.galileocomputing.de/visual_csharp_2010/index.htm
Vielleicht hab ich es schon erwähnt, vielleicht auch nicht ^^
Ist sehr gut, das Buch^^
Ich bin grad bei Kapitel 10 angekommen und hab damit den grundlegenden Teil für C# im Prinzip abgeschlossen.
Die Kapitel 8 und 9 schleppen sich zwar etwas (Bei 8. wusste ich 3/4 schon :D) und 9. ist über das Debugging, wo ich weiß, dass ich das bei meinen Projekten noch gar nicht in so großem Umfang brauche.
Lies dich ein, es liest sich erstaunlich gut^^
I027 - Do 31.05.12 09:16
Ich muss sagen, das ich programmieren auch wirklich sehr spannend finde und es kein langweiliges "rumgehacke" ist wie manche einem weiß machen wollen.
Ich danke dir auf jedenfall schon mal sehr für deine Hilfe und werde mich sobald es zeitlich klappt gleich an deine "Aufgaben" machen :zustimm: .
Grüße,
Nico
Palladin007 - Do 31.05.12 12:35
Hätte ich auch nicht gedacht, bis ich angefangen habe :D
Und heute ist das ein besserer Zeitvertreib als Skyrim zocken :D
Und dazu kommt noch der Stolz, wenn man was neues lernt und anwenden kann oder ein Programm fertig bekommt und es funktioniert.
Das kann einem kein Spiel bieten.
Ganz abgesehen davon hat mal halt auch komplett freie Hand und das gefällt mir auch^^ Und da bietet sich C# auch gerade gut an, weil die Sprache verhältnismäßig leicht ist und trotzdem extrem viel bietet.
Find ich gut, dass du dich da rein hängst, deswegen helfe ich auch so aktiv^^
Mir passt es auch nicht, was andere sagen. Letztens, z.B. im Geschichte-Unterricht waren wir im Computer-Raum, sollten an Vorträgen arbeiten. Ich war fertig und hab mir meine Zeit mit Java vertrieben, im BlueJ, was jeder aus Info kennt.
Die Reaktion: "Der programmiert ja schon wieder. Das ist doch krank!"
Ich kapier nicht, was daran krank ist. Das schult so viele Fähigkeiten de Gehirns und ist auf jeden Fall sinnvoller, als sich das Hirn kaputt zu saufen.
OlafSt - Fr 01.06.12 02:05
Nun, eine Sache hast du daraus definitiv gelernt:
Solche Typen sind nicht wirklich für eine Freundschaft deinerseits geeignet ;)
Palladin007 - Fr 01.06.12 14:27
Stimmt auch wieder :D
Sind ja auch nur Mitschüler. Unwichtige Subjekte, die ignoriert werden können. :D
I027 - Fr 08.06.12 14:20
Da bin ich wieder :)
Habe jetzt endlich mal ein wenig Zeit gehabt mich der Ganzen Sache etwas anzunehmen. Es wäre toll wenn du über meine Lösungsansätze mal drüber schauen könntest. Punkt 4. habe ich bisher leider nicht hinbekommen, hier suche ich noch nach einer Möglichkeit den Inhalt der Methode "kopfzeile" soweit schreibgeschützt zu machen, das Console.Clear den Inhalt nicht löschen kann :? .
Feedback erwünscht! :D :
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { bool e = false; do { Console.Clear(); kopfzeile(); Console.WriteLine("Was möchten Sie tun? - Bitte Zahl Eingeben!:"); Console.WriteLine("Addieren (1)"); Console.WriteLine("Subtrahieren (2)"); Console.WriteLine("Multiplizieren (3)"); Console.WriteLine("Dividieren (4)");
bool istZahl = false; int eingabe = 0; while (istZahl == false) { Console.WriteLine("Bitte wählen Sie die Rechenmethode:");
string eingabeString = System.Convert.ToString(Console.ReadLine()); Console.Clear(); bool result = Int32.TryParse(eingabeString, out eingabe); if (result == true) { istZahl = true; } else { Console.WriteLine("Konvertierung fehlgeschlagen, bitte verwenden Sie eine Zahl zur Eingabe!"); } }
int ergebnis = 0; int[] meineZahlen = eingabeZahlen();
switch (eingabe) { case 1: ergebnis = meineZahlen[0] + meineZahlen[1]; break; case 2: ergebnis = meineZahlen[0] - meineZahlen[1]; break; case 3: ergebnis = meineZahlen[0] * meineZahlen[1]; break; case 4: ergebnis = meineZahlen[0] / meineZahlen[1]; break; default: Console.WriteLine("Falsche Eingabe!"); break; }
Console.WriteLine("Das Ergebnis lautet: " + ergebnis); Console.WriteLine(); Console.WriteLine("zum beenden x drücken, ansonsten ENTER oder beliebige TASTE"); string ende = System.Convert.ToString(Console.ReadLine()); if (ende == "x") { e = true; }
} while (e == false); } static int[] eingabeZahlen() { int[] zahlen = new int[2]; for (int i = 0; i < 2; i++) { Console.WriteLine("Bitte geben sie die " + (i + 1) + ". Zahl ein"); zahlen[i] = System.Convert.ToInt32(Console.ReadLine()); Console.Clear(); } return zahlen; } private static void kopfzeile() { string kopf = "oOoOo...TASCHENRECHNER 1.0...oOoOo"; Console.WriteLine(kopf); Console.WriteLine(); } } } |
Palladin007 - Fr 08.06.12 16:05
Ich schau es mir heute Abend, oder Morgen an.
Muss noch unter die Dusche, dann gehts Partiiii machen :D
I027 - Fr 08.06.12 16:25
Palladin007 hat folgendes geschrieben : |
Ich schau es mir heute Abend, oder Morgen an.
Muss noch unter die Dusche, dann gehts Partiiii machen :D |
Lass dir ruhig Zeit, und viel Spaß :)
Palladin007 - Fr 08.06.12 23:34
Man sollte möglichst "sprechende" Variablen-Namen nehmen, also Namen, anhand denen man sofort weiß, was die Aufgabe ist.
C#-Quelltext
1:
| string eingabeString = System.Convert.ToString(Console.ReadLine()); |
Diese Zeile, die prüft gar nichts.
Die ToString-Funktion, die konvertiert bloß einen Wert in einen Text und mehr nicht, da ReadLine aber sowieso einen Text, also String, zurück gibt, ist das überflüssig.
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| bool result = Int32.TryParse(eingabeString, out eingabe); if (result == true) { istZahl = true; } else { Console.WriteLine("Konvertierung fehlgeschlagen, bitte verwenden Sie eine Zahl zur Eingabe!"); } |
Das ist soweit richtig, allerdings kannst du eigentlich auch gleich in die Variable istZahl speichern. Dann sähe das so aus:
C#-Quelltext
1: 2: 3: 4: 5:
| istZahl = Int32.TryParse(eingabeString, out eingabe); if (istZahl == false) { Console.WriteLine("Konvertierung fehlgeschlagen, bitte verwenden Sie eine Zahl zur Eingabe!"); } |
Wenn du das dann mal anschaust, passiert das gleiche, allerdings sparst du dir einen else-Block und eine Variable.
Ja, der switch-Block.
Das funktioniert so ja alles ganz gut, aber die Kontrolle, ob eine richtige Wahl getroffen wurde, die müsste vorher kommen, oder nach dem default im switch-Block baust du ein, dass die Frage erneut gestellt wird. Ich würde die Kontrolle der Zeichen gleich in der do-while-Schleife erledigen und das Konvertieren in eine Zahl weg lassen. Wenn du da gleich überprüfst, ob das richtige Zeichen eingegeben wurde, dann steht fest, dass auch unter keinen Umständen ein falsches Zeichen eingegeben werden kann.
Die Möglichkeit, das Programm zu beenden, steht jetzt am Ende.
Das geht so auch ganz gut, allerdings würde ich die gleich in das Menü schreiben, weil man sonst erst eine Rechnung durchführen muss um zu beenden. Das ist nicht notwendig und bei dem Umfang würde das auch nicht stören, aber schließlich sind Programme für den Nutzer, also solltest du schauen, die möglichst Nutzer-Freundlich zu gestalten. Am besten so, dass der Nutzer gar nicht mehr denken muss, denn dann ist er glücklich :D
I027 hat folgendes geschrieben : |
Punkt 4. habe ich bisher leider nicht hinbekommen, hier suche ich noch nach einer Möglichkeit den Inhalt der Methode "kopfzeile" soweit schreibgeschützt zu machen, das Console.Clear den Inhalt nicht löschen kann :? . |
Das ist ganz einfach^^
Immer nach jeder Aktion wird das Fenster gelöscht. Wie das geht, weißt du ja.
Und immer, wenn das Fenster gelöscht wird, kommt als erstes die Kopfzeile hin^^
Das Fenster löschen kannst du eigentlich dann ja auch bei Kopfzeile mit einbauen, dann ersparst du dir Schreib-Arbeit.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!