C# 第一个C项目。我在处理错误方面遇到了麻烦。。并使用try/catch。如果有人能看一看,这将意味着很多
而不是 int breadInput=Convert.ToInt32Console.ReadLine 你可能需要类似的东西C# 第一个C项目。我在处理错误方面遇到了麻烦。。并使用try/catch。如果有人能看一看,这将意味着很多,c#,.net,C#,.net,而不是 int breadInput=Convert.ToInt32Console.ReadLine 你可能需要类似的东西 int breadInput; do { Console.WriteLine("How many loaves of bread would you like to purchase today?"); } while (!int.TryParse(Console.ReadLine(), out breadInput)); 我选择了while,
int breadInput;
do
{
Console.WriteLine("How many loaves of bread would you like to purchase today?");
}
while (!int.TryParse(Console.ReadLine(), out breadInput));
我选择了while,而不是while,因为我们需要在评估答案之前提出问题
如果我选择while,那么我必须重复WriteLine行。让我们尝试一下while:
这并不漂亮,但最大的问题是,有一天我可能会在一个地方更改问题,然后忘记更新第二行
< 1
请注意,while中的条件可以扩展为处理负数。任何可以进入if的东西都可以进入一段时间:
辅助方法
我鼓励您创建一个可以重用的助手方法。这将使您的主要逻辑保持干净。下面是一个例子:
// Concise code I can reuse for multiple questions
var ok = AskPositiveInt("How many loaves of bread would you like to purchase today?"
, max: 100
, out int breadInput);
if(!ok)
{
// todo
}
(...)
static bool AskPositiveInt(string question, int max, out int number )
{
// Here we can add as much validation as we wish
Console.WriteLine(question);
int numberOfTries = 5; //Number of tries before giving up
for( int i = 0; i < numberOfTries; i++ )
{
var answer = Console.ReadLine();
if(!int.TryParse(answer, out number))
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number <= 0)
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number > max)
{
Console.WriteLine($"Insufficient stock. Please provide a number <{max}");
continue; // go back to 'for'
}
//Everything OK
return true;
}
number = 0;
return false;
}
错误处理
在代码中,在NegativeEnumberError处理程序中调用Main
这不会长期起作用,因为您从未离开原始主管道
如果数字一直为负数,则添加到链Main->Main->Main->Main。你必须想出一个更好的策略。而不是
int breadInput=Convert.ToInt32Console.ReadLine
你可能需要类似的东西
int breadInput;
do
{
Console.WriteLine("How many loaves of bread would you like to purchase today?");
}
while (!int.TryParse(Console.ReadLine(), out breadInput));
我选择了while,而不是while,因为我们需要在评估答案之前提出问题
如果我选择while,那么我必须重复WriteLine行。让我们尝试一下while:
这并不漂亮,但最大的问题是,有一天我可能会在一个地方更改问题,然后忘记更新第二行
< 1
请注意,while中的条件可以扩展为处理负数。任何可以进入if的东西都可以进入一段时间:
辅助方法
我鼓励您创建一个可以重用的助手方法。这将使您的主要逻辑保持干净。下面是一个例子:
// Concise code I can reuse for multiple questions
var ok = AskPositiveInt("How many loaves of bread would you like to purchase today?"
, max: 100
, out int breadInput);
if(!ok)
{
// todo
}
(...)
static bool AskPositiveInt(string question, int max, out int number )
{
// Here we can add as much validation as we wish
Console.WriteLine(question);
int numberOfTries = 5; //Number of tries before giving up
for( int i = 0; i < numberOfTries; i++ )
{
var answer = Console.ReadLine();
if(!int.TryParse(answer, out number))
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number <= 0)
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number > max)
{
Console.WriteLine($"Insufficient stock. Please provide a number <{max}");
continue; // go back to 'for'
}
//Everything OK
return true;
}
number = 0;
return false;
}
错误处理
在代码中,在NegativeEnumberError处理程序中调用Main
这不会长期起作用,因为您从未离开原始主管道
如果数字一直为负数,则添加到链Main->Main->Main->Main。你必须想出一个更好的策略。这能回答你的问题吗?用于将输入转换为数字,如果收到的输入不是整数,则返回false。对于return true,您将获得不带参数的转换整数。我读取了您的所有代码。我是一个挑剔且脾气暴躁的C开发人员,但到目前为止做得很好。继续学习,继续前进。谢谢你。请查看我的回购协议以获取更新的代码。下一件事是。。分离业务和UI逻辑。我觉得我的主要功能太乱了。。javascript对我来说很简单,但我在这里遇到了困难。这能回答你的问题吗?用于将输入转换为数字,如果收到的输入不是整数,则返回false。对于return true,您将获得不带参数的转换整数。我读取了您的所有代码。我是一个挑剔且脾气暴躁的C开发人员,但到目前为止做得很好。继续学习,继续前进。谢谢你。请查看我的回购协议以获取更新的代码。下一件事是。。分离业务和UI逻辑。我觉得我的主要功能太乱了。。用javascript对我来说很简单,但在这里我很难做到。回答得很好!简洁明了。对do-while循环的解释可能会有所帮助,因为它们在C语言中并不常见applications@BeckamWhite完成,更新。哇!!!!这个网站太棒了。非常感谢你。我在javascript中学习了while,但在c中还没有见过它们。我的项目截止日期是本周,我设法通过错误处理使所有工作正常进行,但我仍然有两个大问题。1.使用自动实现的属性是一项要求。2.正如你所说,一切都在我的主旋律中。。我正在努力将用户逻辑与业务逻辑分离。。特别是因为我认为所有有读控制台的东西都是主的。。谢谢你哦,好的。我了解错误处理。我一定会在我的下一个项目中致力于这一点。Im在一年的编码计划中。。这是我们在c的第二周,所以我还有很多东西要学。知道如何将自动实现的属性添加到此中吗?首先,我必须更好地分离出逻辑,我认为它会自动变得更加明显。答案很好!简洁明了。对do-while循环的解释可能会有所帮助,因为它们在C语言中并不常见applications@BeckamWhite完成,更新。哇!!!!这个网站太棒了。非常感谢你。我在javascript中学习了while,但在c中还没有见过它们。我的项目截止日期是本周,我设法通过错误处理使所有工作正常进行,但我仍然有两个大问题。1.使用自动实现的属性是一项要求。2.正如你所说,一切都在我的主旋律中。。我正在努力将用户逻辑与业务逻辑分离。。尤其是
因为我以为所有有读控制台的东西都是主的。。谢谢你哦,好的。我了解错误处理。我一定会在我的下一个项目中致力于这一点。Im在一年的编码计划中。。这是我们在c的第二周,所以我还有很多东西要学。知道如何将自动实现的属性添加到此中吗?首先,我必须更好地分离出逻辑,我认为它会自动变得更加明显。
// Concise code I can reuse for multiple questions
var ok = AskPositiveInt("How many loaves of bread would you like to purchase today?"
, max: 100
, out int breadInput);
if(!ok)
{
// todo
}
(...)
static bool AskPositiveInt(string question, int max, out int number )
{
// Here we can add as much validation as we wish
Console.WriteLine(question);
int numberOfTries = 5; //Number of tries before giving up
for( int i = 0; i < numberOfTries; i++ )
{
var answer = Console.ReadLine();
if(!int.TryParse(answer, out number))
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number <= 0)
{
Console.WriteLine("Please provide a number.");
continue; // go back to 'for'
}
if (number > max)
{
Console.WriteLine($"Insufficient stock. Please provide a number <{max}");
continue; // go back to 'for'
}
//Everything OK
return true;
}
number = 0;
return false;
}