启动我的编程类简介,我们将在整个过程中使用C#。我正在编写一个练习程序来熟悉C#,询问用户的姓名和年龄,然后将其读出来并询问是否正确。我想这样做,以便如果用户想要出于任何原因改变他们输入的数据,那么他们可以按“n”键“不,那是不对的”并重新输入他们的数据。但是,我想重新问他们年龄和名称的问题(单独),而不必使用Console.WriteLines和if ... else块重新键入代码块。我做了一些研究,发现:
我的问题是,虽然我(希望)发现这就是我需要做的事情,但我似乎无法弄清楚如何实现该方法,也不会在以后正确地调用它。
这是我正在尝试创建的方法,我想要保存一个“if ... else”语句,询问信息是否正确,不正确,或者如果输入的内容不是“y”或“ N“:
public void Question()
{
Console.Write("Could I get your name? (Press enter when you are done) ");
string user_name = Console.ReadLine();
Console.Clear();
Console.Write("Awesome! Now if you could just enter your age: ");
string user_age = Console.ReadLine();
Console.Clear();
Console.WriteLine("So according to the information I have on file here... you are " + user_name + " and you're " + user_age + " years old....");
}
这不是功课,所以我不介意具体的代码片段,所以我可以看到它是如何工作的,并修补它来学习:)
自己做一些研究的好工作,以及一个相当不错的问题。你走在正确的轨道上。
所以让我们首先关注问题部分。如果你看看你的Question()
方法,你可以看到你在它里面反复做同样的事情。是的,你问的是不同的问题,但基本上你做了三件事:
所以,也许你可以将这三个东西放在一个方法中,这里唯一可变的是问题,所以你可以将问题作为参数传递。
static string AskQuestion(string question)
{
Console.Write(question);
var ans = Console.ReadLine();
Console.Clear();
return ans;
}
好吧,好一点。
现在,在得到满意答案之前,我们如何反复询问用户问题?循环是一个很好的解决方案,特别是while
或do-while
,它不会迭代一定次数,而是直到满足条件。我个人喜欢在这种情况下使用do-while
。
那么我们现在要做什么呢?让我们分解吧。我们将编写一个函数,并在循环内部我们想: - 提出问题并得到答案。我们有一种方法可以做到这一点。 - 向用户显示他/她输入的答案。 - 要求用户确认它是否良好。 - 如果是,则终止循环,然后返回答案。 - 如果没有,请再次提问。
看起来像这样的东西:
static string GetSatisfactoryAnswer(string question)
{
var ans = string.Empty;
bool goodAns = false;
do
{
ans = AskQuestion(question);
Console.WriteLine("You entered {0}. Is that correct?", ans);
var confirm = Console.ReadLine();
if (confirm.ToLower() == "y")
goodAns = true;
} while (!goodAns);
return ans;
}
现在你可以像这样打电话给他们:
static void Main(string[] args)
{
var name = GetSatisfactoryAnswer("Could I get your name? (Press enter when you are done) ");
var age = GetSatisfactoryAnswer("Awesome! Now if you could just enter your age: ");
Console.WriteLine();
Console.WriteLine("Name : {0}", name);
Console.WriteLine("Age : {0}", age);
Console.ReadLine();
}
Y/N
以外的任何内容进行确认该怎么办?int.TryParse()
将string
输入转换为int
,然后在输入非数值时对其进行处理。Name
和Age
,然后请求稍后确认它们。在我看来,最好是完成一件事并开始另一件事。换句话说,确保你得到一个令人满意的答案Name
,然后转移到Age
等。我的答案是这样设计的。希望这可以帮助。祝好运!