Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 第一个C项目。我在处理错误方面遇到了麻烦。。并使用try/catch。如果有人能看一看,这将意味着很多_C#_.net - Fatal编程技术网

C# 第一个C项目。我在处理错误方面遇到了麻烦。。并使用try/catch。如果有人能看一看,这将意味着很多

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=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。你必须想出一个更好的策略。

而不是

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;
}