有没有简单的方法可以向该程序添加“ do”?我的作业需要一个“做”:)
namespace Uppgift_1___Gissa_talet
{
class Program
{
static void Main(string[] args)
{
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
Console.WriteLine("Minigame: Gissa talet!");
Console.WriteLine();
Console.WriteLine("Skriv in ett tal mellan 1 och 100:");
string str = Console.ReadLine();
int tal = Convert.ToInt32(str);
while (tal != slump_tal)
{
if (tal < slump_tal) //Är det mindre?
{
Console.WriteLine("Fel! Större!");//Säg då att det ska vara större
}
else if (tal > slump_tal)
{
Console.WriteLine("Fel! Mindre!");
}
tal = Convert.ToInt32(Console.ReadLine());//Läs in nästa gissning
}
Console.WriteLine("Grattis! Du gissade rätt!");
Console.WriteLine("Tryck på en tangent för att avsluta...");
Console.ReadLine();
}
}
}
答案 0 :(得分:0)
namespace Uppgift_1___Gissa_talet
{
class Program
{
static void Main(string[] args)
{
Random randomerare = new Random();
int slump_tal = randomerare.Next(1, 101);
Console.WriteLine("Minigame: Gissa talet!");
Console.WriteLine();
Console.WriteLine("Skriv in ett tal mellan 1 och 100:");
string str = Console.ReadLine();
int tal = Convert.ToInt32(str);
do //You start the loop before the test expression is checked
{
if (tal < slump_tal) //Är det mindre?
{
Console.WriteLine("Fel! Större!");//Säg då att det ska vara större
}
else if (tal > slump_tal)
{
Console.WriteLine("Fel! Mindre!");
}
tal = Convert.ToInt32(Console.ReadLine());//Läs in nästa gissning
}while(tal != slump_tal); // The test expression is checked here.
Console.WriteLine("Grattis! Du gissade rätt!");
Console.WriteLine("Tryck på en tangent för att avsluta...");
Console.ReadLine();
}
}
}
答案 1 :(得分:0)
您所要做的就是将while
移动到块的末尾(后跟一个分号),然后在块的开头添加一个do
。
此外,这使您可以将用户输入完全移入循环中,而不必两次编写。唯一的陷阱是tal
必须在循环之外定义,因为它是在while
条件下使用的:
private static void Main(string[] args)
{
int slump_tal = new Random().Next(1, 101);
int tal;
Console.WriteLine("Minigame: Gissa talet!\n");
Console.WriteLine("Skriv in ett tal mellan 1 och 100:");
do
{
tal = Convert.ToInt32(Console.ReadLine());
if (tal < slump_tal)
{
Console.WriteLine("Fel! Större!");
}
else if (tal > slump_tal)
{
Console.WriteLine("Fel! Mindre!");
}
} while (tal != slump_tal);
Console.WriteLine("Grattis! Du gissade rätt!");
Console.WriteLine("Tryck på en tangent för att avsluta...");
Console.ReadLine();
GetKeyFromUser("\nDone! Press any key to exit...");
}
您可以做的另一种改进是包括一个帮助程序方法,该方法可以验证用户输入实际上是一个数字,这样,如果用户输入的内容类似“ 2”而不是“ 2”,则不会引发异常。以下方法采用“提示”字符串(用户的问题),并使用一个循环,其中条件使用int.TryParse
来验证条目是否为整数,并继续循环直到返回true
,然后返回用户输入的整数:
private static int GetIntFromUser(string prompt)
{
int input;
do
{
Console.Write(prompt);
} while (!int.TryParse(Console.ReadLine(), out input));
return input;
}
现在,我们可以使用此方法来获取用户输入:
private static void Main(string[] args)
{
int slump_tal = new Random().Next(1, 101);
int tal;
var prompt = "Skriv in ett tal mellan 1 och 100: ";
Console.WriteLine("Minigame: Gissa talet!\n");
do
{
tal = GetIntFromUser(prompt);
prompt = tal < slump_tal
? "Fel! Det numret är för litet. Försök igen: "
: "Fel! Det numret är för stort. Försök igen: ";
} while (tal != slump_tal);
Console.WriteLine("Grattis! Du gissade rätt!");
Console.WriteLine("Tryck på valfri tangent för att avsluta...");
Console.ReadLine();
}