C# Versuch zwei?
Guten Morgen,
ich bin gerade dabei mit dem Programmieren bei C# Anzufangen und bräuchte mal ein wenig Hilfe. Ich habe bis jetzt diesen Code:
using System;
namespace roboter
{
class Program
{
static void Main(string[] args)
{
string antwort;
bool antwortOk;
string antwortRobo;
bool antwortOkRobo;
{
do
{
Console.WriteLine("Guten Tag Herr Baumann, möchten sie meinen Roboter starten? [Ja|Nein]");
antwort = Console.ReadLine();
antwortOk = antwort.ToLower() == "ja" || antwort.ToLower() == "nein";
if (!antwortOk) //Nur die Frage, ob man es starten will
{
Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
}
} while (!antwortOk);
do
{
Console.WriteLine("Ist die Wand schon da?");
antwortRobo = Console.ReadLine();
antwortOkRobo = antwortRobo.ToLower() == "ja" || antwortRobo.ToLower() == "nein";
if (!antwortOkRobo) //Nur die Frage, ob man es starten will
{
Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
}
Console.WriteLine("Schritt");
} while (!antwortOkRobo);
Console.WriteLine("Drehung");
do
{
Console.WriteLine("Möchten Sie eine weitere Aufgabe Berechnen? [Ja|Nein]");
antwort = Console.ReadLine();
antwortOk = antwort.ToLower() == "ja" || antwort.ToLower() == "nein";
if (!antwortOk)
{ //Nur Frage, ob man ihn nochmal starten soll
Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
}
} while (!antwortOk);
} while (antwort.ToLower() == "ja") ;
Console.WriteLine("Bis zum nächsten Mal!");
Console.ReadKey();
}
}
}
Ich würde gerne, dass er nur den Schritt macht, wenn man nein sagt. Und wenn man ja sagt, soll er sich nur drehen und keinen Schritt machen, wie kann ich das am besten umsetzen?
1 Antwort
Guten Morgen DANIELdjldqwj,
bitte beachte, dass es hier eine Codeformatierung gibt. Er ist sonst ziemlich schwer lesbar.
antwortOk = antwort.ToLower() == "ja" || antwort.ToLower() == "nein";
if (!antwortOk)
{ //Nur Frage, ob man ihn nochmal starten soll
Console.WriteLine("Bitte geben Sie Ja oder Nein ein");
}
Du hast in diesem Teil den Grundstein schon gelegt. Nun fängst Du die nächste Antwort auch wieder so ab;
antwort = Console.ReadLine().ToLower();
if (antwort == "ja")
{
//Drehen
}
else if (antwort == "nein")
{
//Schritt machen
}
Du kannst also entsprechende Antworten auftrennen in andere Codeblöcke.
Beantwortet das Deine Frage?
VG
Ja, könntest du auch;
antwort = Console.ReadLine().ToLower();
switch(antwort)
{
case "ja":
// Drehen
break;
case "nein":
// Schritt machen
break;
}
Tut im Grunde dasselbe und im Hintergrund nichts anderes. Ist in dem Falle also nicht zu relevant.
Wenn man jetzt aber nicht ja oder nein eingeben würde, was würde dann passieren, weil das würe mir auch noch wichtig, dass wenn man kein ja oder nein angibt, dass die Schleife von vorne startet und ein Text kommt, wo man darauf hingewiesen wird.
In dem Falle würde nichts von beidem kommen. Du kannst aber beides um einen Alternativfall erweitern.
if()
else if ()
else
{
}
// Oder
switch()
{
case a:
break;
default:
break;
}
Das else benötigt wie das Default auch keinen Wert, da damit alle anderen Fälle gemeint sind. Dort kannst Du sowas angeben wie "Die Eingabe ist nicht korrekt" und die Schleife wird danach wie gewohnt wiederholt.
VG
Habe nochmal den zweiten Block korrigiert. ToLower() musst du nur einmal auf das ReadLine() ausüben. Das zwei mal zu tun wäre nicht sinnig. :-)
Könnte man es eigentlich auch mit nem Switch Case machen (Kenne mich bei dem Switch Zeug noch nicht so aus, hoffe du weißt, was ich meine)