Entwickler-Ecke

C# - Die Sprache - [Anfängerfrage]need help ^^


Verdun - Sa 09.02.08 19:37
Titel: [Anfängerfrage]need help ^^
wie kann ich, wenn ich diese abfrage habe:

C#-Quelltext
1:
2:
Console.WriteLine("Wollen sie ein weiteres Element einfügen? (J/N)");
char entscheidung = char.Parse(Console.ReadLine());


machen dass es egal ist ob man j, J, n bzw N eingibt?
benötige ich für das daurafu folgende if...

danke..

ps.: ja ich kann programmieren aber mir fällt der Befehl in C# nimmer ein -.-

Moderiert von user profile iconChristian S.: C#-Tags hinzugefügt


JüTho - Sa 09.02.08 19:44


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
ConsoleKeyInfo ki = Console.ReadKey();
char c = ki.KeyChar.ToUpper();
if (c == 'J') {
  ..
else if (c == 'N') {
  ..
}

Allgemeine Empfehlung: schau doch in der SDK-Doku nach, was es für Methoden bei einer Klasse gibt, z.B. Console, und welche Eigenschaften das Ergebnis enthält.

Jürgen


Verdun - Sa 09.02.08 19:51

Ja danke.... aber bei mir gibt es den Befehl ToUpper nicht!
ich programmiere mit Visual Studio 2005..


Christian S. - Sa 09.02.08 20:05

Hallo,

bitte ändere den Titel des Topics, da er wenig über das eigentlich Thema verrät. Hier der entsprechende Absatz aus den Richtlinien [http://www.entwickler-ecke.de/richtlinien.html]:

1.2 Beiträge:
Bitte formuliere den Betreff Deiner Beiträge so, dass andere Mitglieder anhand dieser bereits das eigentliche Thema festmachen können. Beiträge wie etwa "Eine Anfängerfrage" oder "Weiß jemand, wie das geht?" lassen den Leser im Unklaren darüber, was das Thema der Diskussion ist.[...]


Einfach oben bei Deinem ersten Beitrag auf user defined image oder user defined image klicken und den Titel ändern. Danke Dir!

Viele Grüße,
Christian


JüTho - So 10.02.08 11:30

user profile iconVerdun hat folgendes geschrieben:
ich programmiere mit Visual Studio 2005..

Ob Du mit Visual Studio 3000 oder mit #D oder mit Notepad oder einem eigenen Editor programmierst, ist hinsichtlich der verwendeten Klassen und Methoden völlig unwichtig. Alles kommt vom NET Framework. Da ist allenfalls interessant, ob es um 1.1 oder 2.0 oder 3.0 oder 3.5 geht.

user profile iconVerdun hat folgendes geschrieben:
Ja danke.... aber bei mir gibt es den Befehl ToUpper nicht!

Es geht nicht um einen Befehl, sondern um die Methode ToUpper(). Methoden werden unter C# (das ist die Programmiersprache) immer mit Klammern gekennzeichnet, um sie von Eigenschaften zu unterscheiden. (Was Befehle sind, kannst Du über den Index der SDK-Doku erkennen.) Die SDK-Doku ist sowieso das wichtigste Hilfsmittel - vor allen Foren.

Die folgende Erläuterung kannst Du selbst über die SDK-Doku herausfinden. Es ist wirklich nicht angebracht, mit solchen primitiven Problemen ein Forum zu belasten (zumal bei dem nach wie vor sehr aussagefähigen Titel):

Also ist alles vorhanden und scheint korrekt zu sein. Zumindest ist Deine Fehlerbeschreibung "bei mir gibt es den Befehl ToUpper nicht" so nicht richtig. Aber siehe da - dies ist eine statische Methode; also ist meine Umsetzung falsch. "Statisch" bedeutet: sie gehört generell zur Klasse Char, nicht zu einem bestimmten Element c. Die Fehlerbeschreibung bedeutet also: "in Bezug auf das Element c gibt es ToUpper() nicht". Richtig wäre:

C#-Quelltext
1:
2:
ConsoleKeyInfo ki = Console.ReadKey();
char c = Char.ToUpper(ki.KeyChar);

Auch dafür ist die SDK-Doku ein hervorragendes Hilfsmittel: Neben Erläuterungen gibt es die Definition und viele Beispiele. Wenn man sich nur auf "Intellisense" verlässt, wird einem das selbständige Denken nicht nur abgenommen, sondern man verlernt es schnell.

Die Suche in der SDK-Doku hätte außerdem noch ein einfaches Verfahren (mit Beispiel) über Console.Read() geliefert.

Du siehst: Durch Eigeninitiative kommt man weiter. Jürgen

PS. Ich gebe freilich zu, dass die Bezeichnungen der Klassen, Eigenschaften und Methoden oft verwirren. Das ging gerade mir als Delphi-Umsteiger oft so. Aber wenn man sich in der SDK-Doku die Liste "Alle Member" und die Kurzbeschreibungen durchliest, wird man sehr oft automatisch auf ein passendes Element gestoßen.

PS 2. Bitte entschuldige, wenn meine Ausführungen etwas besserwisserisch klingen. Aber auch für Anfänger sind korrekte Bezeichnungen, Formulierungen und Fragen wichtig. Und wenn Du korrekt fragst, wirst Du auch leichter korrekte Antworten bekommen.

PS 3. Der Fehler in meinem Beispiel-Code hatte damit allerdings nichts zu tun; der war darauf zurückzuführen, dass ich einfach etwas hingeschrieben habe, ohne es zu testen. Aber das muss sowieso Deine Aufgabe sein (es ist ja auch Deine Frage); und wie ich erläutert habe, bietet die SDK-Doku auch die Möglichkeit dazu.

PS 4 (12:39 Uhr). Hier sieht man, dass das NET Framework nicht immer "konsistent" aufgebaut ist. String.ToUpper() ist nicht statisch, sondern wird direkt auf einen bestimmten String angewendet. Char.ToUpper(c) ist dagegen statisch. So entstehen oft unerklärliche Fehler; auch deswegen ist die (eigenständige) Suche in der SDK-Doku so wichtig. (Bitte nicht über string <-> char diskutieren; es kann schon interne Gründe geben, warum das unterschiedlich implementiert wurde.)


Christian S. - So 10.02.08 11:49

user profile iconJüTho hat folgendes geschrieben:
Es ist wirklich nicht angebracht, mit solchen primitiven Problemen ein Forum zu belasten
In diesem Forum sind alle Fragen willkommen! Dieses Forum ist für Anfänger und Fortgeschrittene gleichermaßen da. Bitte verschrecke Anfänger nicht mit solchen Aussagen! :mahn:


JüTho - So 10.02.08 12:26

user profile iconChristian S. hat folgendes geschrieben:
In diesem Forum sind alle Fragen willkommen! Dieses Forum ist für Anfänger und Fortgeschrittene gleichermaßen da. Bitte verschrecke Anfänger nicht mit solchen Aussagen! :mahn:

So war es nicht gemeint. Schließlich habe ich ja sehr ausführlich geantwortet. Aber es ist wohl nicht zuviel verlangt, auch selbst nach Fehlern zu suchen.

Aber Du hast wohl recht: ich werde künftig eine "passendere" Formulierung suchen.

Schönen Sonntag! Jürgen