Entwickler-Ecke
C# - Die Sprache - C# Fehler bei if-else-Anweisung mit Console.ReadLine()
storestore - Do 01.09.11 13:55
Titel: C# Fehler bei if-else-Anweisung mit Console.ReadLine()
Hallo,
ich bins wieder .,. ,
ich bin dabei c# zu lernen und deswegen dachte ich mir ich will mal meine Kentnisse testen und nciht immer nur im Buch lesen!
Ich habe folgendes Problem:
Wenn ich bei der Consolen anwendung 'D' eingebe, dann ist alles ok. Er Fürht die Anweisung wie in der If- Anweisung aus. Aber wenn ich 'A' eingebe dann beendet er einfach das Programm.
Ich weiß echt nicht mehr weiter :(
Hier ist mal der quellencode
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:
| using System; using System.Collections.Generic; using System.Linq; using System.Text;
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Console.WriteLine("Hallo, geben sie bitte ihr aktuelles Guthaben ein!"); double geld = Convert.ToDouble(Console.ReadLine()); Console.ReadLine(); Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?"); Console.WriteLine("D= draufzahlen, A=Abziehen!"); if (Console.ReadLine() == "D") { Console.WriteLine("Wie viel wollen sie drauf zahlen?"); double draufzahlen = Convert.ToDouble(Console.ReadLine()); geld = geld + draufzahlen; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } else { if (Console.ReadLine() == "A") { Console.WriteLine("Wie viel wollen sie abheben?"); double abheben = Convert.ToDouble(Console.ReadLine()); Console.ReadLine(); geld = geld + abheben; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } } } } } |
mfg storestroe
Moderiert von
Th69: Titel geändert.
Th69 - Do 01.09.11 14:07
Hallo storestore,
hast du schon den Debugger genutzt?
Dann würdest du sehen, daß er nach der ersten Eingabe (von "A") in der Zeile
C#-Quelltext
1:
| if (Console.ReadLine() == "A") |
stehen bleibt (bzw. müsste ;-))
Du wartest also zweimal auf das Eingeben einer Zeile.
Alternative wäre die Rückgabe von ReadLine() in einer eigenen Variablen zu speichern oder aber eine switch-case-Anweisung...
P.S: Kannst du deinen eigenen Namen nicht mehr schreiben? :SCNR:
mats74 - Do 01.09.11 14:17
Hallo storestore
Ich würde den Konsolenwert in einer Variable speichern und danach die If-Anweisung entsprechend setzen:
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:
| class Program { static void Main(string[] args) { Console.WriteLine("Hallo, geben sie bitte ihr aktuelles Guthaben ein!"); double geld = Convert.ToDouble(Console.ReadLine()); Console.ReadLine(); Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?"); Console.WriteLine("D= draufzahlen, A=Abziehen!"); string text = Console.ReadLine(); if (text == "D") { Console.WriteLine("Wie viel wollen sie drauf zahlen?"); double draufzahlen = Convert.ToDouble(Console.ReadLine()); geld = geld + draufzahlen; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } else if (text == "A") { Console.WriteLine("Wie viel wollen sie abheben?"); double abheben = Convert.ToDouble(Console.ReadLine()); geld = geld - abheben; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } else { } } } |
Kleiner Fehler noch beim "abheben" (+/-).
Gruss
mats74
storestore - Do 01.09.11 14:34
Th69 hat folgendes geschrieben : |
Hallo storestore,
hast du schon den Debugger genutzt?
Dann würdest du sehen, daß er nach der ersten Eingabe (von "A") in der Zeile
C#-Quelltext 1:
| if (Console.ReadLine() == "A") |
stehen bleibt (bzw. müsste ;-))
Du wartest also zweimal auf das Eingeben einer Zeile.
Alternative wäre die Rückgabe von ReadLine() in einer eigenen Variablen zu speichern oder aber eine switch-case-Anweisung...
P.S: Kannst du deinen eigenen Namen nicht mehr schreiben? :SCNR: |
Hallo, also der debugger gibt mir keinen Fehler und das mit dem Namen war nur ausversehen. Das zeigt aber das ich ein Mensch bin
mfg storestore
Editt:
mats74 hat folgendes geschrieben : |
Hallo storestore
Ich würde den Konsolenwert in einer Variable speichern und danach die If-Anweisung entsprechend setzen:
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:
| class Program { static void Main(string[] args) { Console.WriteLine("Hallo, geben sie bitte ihr aktuelles Guthaben ein!"); double geld = Convert.ToDouble(Console.ReadLine()); Console.ReadLine(); Console.WriteLine("Wollen sie was drauf zahlen oder abziehen?"); Console.WriteLine("D= draufzahlen, A=Abziehen!"); string text = Console.ReadLine(); if (text == "D") { Console.WriteLine("Wie viel wollen sie drauf zahlen?"); double draufzahlen = Convert.ToDouble(Console.ReadLine()); geld = geld + draufzahlen; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } else if (text == "A") { Console.WriteLine("Wie viel wollen sie abheben?"); double abheben = Convert.ToDouble(Console.ReadLine()); geld = geld - abheben; Console.WriteLine("Ihr aktuelles Guthaben= " + geld); Console.ReadLine(); } else { } } } |
Kleiner Fehler noch beim "abheben" (+/-).
Gruss
mats74 |
Danke, dann muss ich das eine Console.Readline(); weglassen. Das mit dem +/- ist mir auch schon aufgefallen. Wie regle ich das am besten. Also an der Variable duble liegt es schonmal nicht!
mfg storestore
mats74 - Do 01.09.11 14:43
Hallo storestore
| Zitat: |
| Wie regle ich das am besten. Also an der Variable duble liegt es schonmal nicht! |
Also bei mir funktioniert der Code tip top.
Was willst Du den noch genau regeln?
Gruss
mats74
storestore - Do 01.09.11 14:49
mats74 hat folgendes geschrieben : |
Hallo storestore
| Zitat: | | Wie regle ich das am besten. Also an der Variable duble liegt es schonmal nicht! |
Also bei mir funktioniert der Code tip top.
Was willst Du den noch genau regeln?
Gruss
mats74 |
Naja das wenn ich jetzt guthaben 100 angebe und 200 abziehe dann zeigt er mir an das ich noch 100 habe aber nicht das es minus 100 sind
Yogu - Do 01.09.11 14:57
storestore hat folgendes geschrieben : |
| Naja das wenn ich jetzt guthaben 100 angebe und 200 abziehe dann zeigt er mir an das ich noch 100 habe aber nicht das es minus 100 sind |
Also der Code im
Beitrag [
http://www.c-sharp-forum.de/viewtopic.php?p=649431#649431] von
mats74 funktioniert bei mir, er zeigt
-100 an, wenn ich von 100 200 abziehe. Wie sieht denn dein Quelltext aus?
storestore - Do 01.09.11 15:34
Achso,ok danke passt schon. Ich hatte das minus übersehen :oops:
Danke für eure Hilfe.
mfg storestore
PS: Hättet ihr noch vorschläge für die Verbesserung oder muss ich dafür das Thema in dem bereich der Freeware öffnen?
dark-destination1988 - Do 01.09.11 15:36
kannst ja noch zinsen und laufzeit eingeben lassen und dann die Zinsen zum kontostand hinzurechnen
bakachan - Do 01.09.11 15:39
Wie wäre es erstmal wenn das Programm nicht endet nachdem man einmal eingezahlt/abgehoben hat?
storestore - Do 01.09.11 15:40
dark-destination1988 hat folgendes geschrieben : |
| kannst ja noch zinsen und laufzeit eingeben lassen und dann die Zinsen zum kontostand hinzurechnen |
Hi,
ok das mit den zinsen ist eine gute Idee. Aber das mit der Laufzeit verstehe ich nicht ganz. Was genau meinstu du als Lauftzeit.Meinst du die Laufzeit eines Kredites oder was? Hab erst seit einem Jahr BWR an der Schule ;)
Editt: Ich habe mir noch überlegt die ergebniss mit einem Streamwriter zu speichern und beim nächsten offnen es mit einem Streamreader wieder auszugeben.
dark-destination1988 - Do 01.09.11 15:52
naja beispielsweise, du hast in deiner ersten frage die auswahlmöglichkeit--> warten
gibst dort die anzahl der zinsen und die zeit die vergeht
-->bsp
du hast 100 euro
gehst auf warten gibst 1 % und 2 jahre ein
dann kriegst du 102,01 Euro raus
(aufpassen 1 jahr vorbei 101 euro--> zweites jahr 1% von 101 Euro!)
storestore - Do 01.09.11 15:55
Hmm, ok das wäre cool. Dann mache ich so eine art Simulation drauß. Danke für den tollen Tipp oh bei 1% von 101 euro muss man echt aupassen!
lg storestore
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 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!