Autor Beitrag
interessierter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 10.04.12 22:06 
Hallo Leute

Ich mache ständig Fortschritte in meinem C Sharp Lehrgang und bin nun auf eine Frage gestossen.

Kurze Schilderung meines Übungsprojekts:

User kann sich ein Sandwich zusammenstellen und muss zur Beschaffenheit antworten geben.

Anschliessend soll ausgegeben werden wie sich der User das Sandwich zusammengestellt hat.

Ich mache das zur Übung mit ganz einfachen C Sharp Konsolenprogramm.

Nun zur Frage. Folgend werde ich den Quell Code posten. Ich will erreichen, das der User so antworten muss, wie von mir vorgeben. Sonst könnte er ja irgendwas schreiben und das Sandwich würde nicht richtig ausgegeben werden.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Console.WriteLine("Wollen Sie Peperoni in Ihren Sandwich");
string Peperoni = Console.ReadLine();

if (Peperoni == "Ja" || Peperoni == "nein")
{
    Console.WriteLine("Vielen Dank für die Auswahl");
}
else
{
    Console.WriteLine("Bitte definieren Sie Ihre Auswahl entwerder mit Ja oder Nein. (Gross - Kleinschreibung beachten");
}


Nun sollte es das wie gesagt solane wiederholen bis user entweder mit Ja oder Nein geantwortet hat und die Antwort sollte dan in ReadLline richtig eingelesen werden, damit ich später abfragen kann.

Würde mich über eine Hilfestellung freuen.

Liebe Grüsse
interessierter


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


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 10.04.12 22:28 
Das Stichwort Schleife steht ja schon im Titel deiner Frage. Dann weißt du ja offensichtlich schon was du brauchst. An deiner letzten Fragen sieht man auch das du schon Schleifen benutzt hast.

Ich würde vorschlagen du versuchst erst mal die Verzweigung selbst durch eine Schleife zu ersetzen. Hier bietet sich insbesondere die do..while Schleife an. Wenn du dann damit Probleme hast fragst du nochmal mit dem dann aktuellen Code.
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 10.04.12 22:31 
Hallo Ralf Jansen

Oke, jetzt habe ich einen Lösungsansatz, danke viel mal. Werde jetzt die Theorie der do while Schleife studieren und mich dann mit aktuellem Code oder Lösung ;) wieder melden.

Grüsse Interessierter
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Di 10.04.12 23:12 
Ich glaube bin nun kurz vor der Lösung, es fehlt aber noch was.

Ich habe jetzt den Code wie folgt umgeschrieben:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Console.WriteLine("Wollen Sie Peperoni in Ihren Sandwich");
string Peperoni = Console.ReadLine(); 

{
  do Console.WriteLine("Bitte Auswahl mit Ja oder Nein definieren");

  while (Peperoni != "Ja");
}

Wenn ich das Konsolenprogramm nun durchlaufen lasse, dann läuft es wirklich unendlich :)
Man sollte jetzt nochmals aufgeforert werden mit Ja oder nein zu antworten.

Bin ich auf dem richtigen Weg? Was fehlt noch?

Greets
interessierter

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


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Di 10.04.12 23:25 
Alles was du brauchst schein da zu sein. Wenn du die Aufforderung nochmal willst musst du die nicht vor die Schleife sondern in die schreiben. Insbesondere das Console.ReadLine(). Sonst rotiert die Schleife endlos vor sich hin und der User bekommt nie die Chance was neues einzugeben. Dein Klammern setzen ist auch so etwas merkwürdig.

Es sollte mehr so aussehen.

ausblenden C#-Quelltext
1:
2:
3:
4:
do
{
  tu was
while (Bedingung)
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Mi 11.04.12 00:13 
Juhuu endlich mal ein Lichtblick :)

Ich habs jetzt so hingekriegt das der Code funktioniert, solange nur eine vorgegebene Antwort auf meine Frage definiert ist, also z.B. "Ja". Wenn ich aber "Ja" und "Nein" als mögliche Antworten definiern will, klappts wieder nicht mehr.

Hier nochmal der Code der klappt, solange ich bei while nur Ja definiert habe. Nein wollte ich dann mittels || Console.ReadLine() != "Nein"); so wie man es auch sonst macht, falls mehrere Antworten möglich sind. Nun der neue Code:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
Console.WriteLine("wollen sie peperoni");

do
{
    console.writeline("bitte auswahl mit ja oder nein definieren (grossschreibung beachten)");
}
while (Console.ReadLine() != "Ja"):


Wie kann ich jezt noch "Nein" als mögliche Antwort definieren.

Vielen Dank schon mal bis hier hin.

Grüsse
interessierter

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19312
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 11.04.12 08:50 
Schau dir einmal die Operatoren an, die C# hat. Damit kannst du mehrere Werte kombinieren:
msdn.microsoft.com/d...ibrary/6a71f45d.aspx
Insbesondere dürfte dich && interessieren: ;-)
msdn.microsoft.com/d...ibrary/2a723cdk.aspx

Du musst den Eingabewert aber wie zuvor zwischenspeichern (in deinem string Peperoni), denn erstens kannst du den sonst danach nicht auswerten, und zweitens auch gar nicht erst mit mehreren Werten vergleichen. :zwinker:
Kleines Beispiel:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
string Peperoni; // nur deklarieren, aber noch nicht füllen

do
{
  // ...
  Peperoni = Console.ReadLine();
  // ...
while (...);

if (Peperoni == ...) // danach dann noch einmal auswerten um auf die einzelnen Werte zu reagieren
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Mi 11.04.12 09:36 
Zitat:
Wie kann ich jezt noch "Nein" als mögliche Antwort definieren.


Ähnlich wie in deiner If Abfrage in deinem ersten Beitrag nur logisch negiert. Den Ansatz hat dir jaenicke ja schon aufgezeigt. Diese Auswertung gehört aber in den while Ausdruck und nicht in einen folgende If Abfrage. Den Code ändert er aber bestimmt gleich ;)
interessierter Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 75



BeitragVerfasst: Do 12.04.12 02:18 
Hallo Zusammen

Freude herrscht ;) der Code steht und ich hab wieder mal was gelernt. Ich konnte meine Idee dank euren Lösungsansätzen umsetzten und hab mich in Sachen "Computergerecht mit dem Computer reden" verbessert. :D

Mein Übungsprogramm, welches ich später dann auch in Visual C Sharp schreiben werde, soll den User abfragen wie er sein Sandwich haben will. Deswegen die klaren Antworten mit Ja oder Nein. Z.B. willst du Salat im Sandwich? Ja oder Nein. Willst du Tomaten im Sandwich? Ja oder nein. Dies damit ich im C Konsolen Programm ohne Buttons und Klassen etc. den Ablauf und Strukur von Codes verinnerlichen kann. Das reicht erst mal zum üben bevor ich mich in tieferes Gewässer begebe.

Ich poste foldend noch den fertig erstellten Code. Vielleicht hats hier im Forum ja noch andere Anfänger, die damit was anfangen können.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Console.WriteLine("Wollen Sie Peperoni in Ihrem Sandwich?");

string Peperoni;

do
{
  Console.WriteLine("Bitte definieren Sie Ihre Auswahl mit Ja oder Nein. (Gross -Kleinschreibung beachten");
  Peperoni = Console.ReadLine();

  while (Peperoni != "Ja" && Peperoni != "Nein");

  Console.WriteLine("Ihre Auswahl ist: " + Peperoni);
}

Greets
interessierter

Moderiert von user profile iconTh69: C#-Tags hinzugefügt