c# - 如果不正确,请再次提问,直到正确为止
问题描述
请在下面查看我的代码。
Console.WriteLine("Enter a number between 1 and 5");
string _numberInt = Console.ReadLine();
Convert.ToInt32(_numberInt);
if (_numberInt != "1, 5")
{
throw new System.ArgumentException("Please use a number between 1-5.");
}
我正在尝试编写代码,以便如果用户没有输入 1 到 5 之间的数字,它将引发异常。然后我希望它返回并再次提出问题,直到它是正确的。
在这个当前实例中,它会简单地跳过这个并且控制台将关闭,同时也会忽略我的其余代码。请有人帮我理解我需要在这里做什么?
在任何人提出任何建议之前,我编码的时间不长,我正在尝试尽可能多地学习。请留下建设性意见。
解决方案
在尝试将输入从字符串转换为数字后,您需要使用>=
and运算符来检查输入:<=
while(true)
{
Console.WriteLine("Enter a number between 1 and 5");
var input = Console.ReadLine();
if(int.TryParse(input, out var value) && value >= 1 && value <= 5)
{
Console.WriteLine("Thanks");
break;
}
else
{
Console.WriteLine("invalid input")
}
}
请注意,您永远不应该将异常用作某种廉价的流控制。它们用于报告您通常无法恢复的异常情况。在您的程序中,无效值不是例外,而是常态,您应该适当地处理它。
推荐阅读
- c# - 无法将 DateFrame JSON 解析为 C#
- node.js - 世博会构建'Javascript堆内存不足'
- python-3.x - 部署在 heroku 上的 Discord 机器人在启动后崩溃
- python - 有没有办法使用openpyxl将Python的输出值一个一个地传输到excel的单元格中?
- laravel - Laravel 2 api 集成
- java - 我无法捕捉 InputMismatchException
- r - 如何使 geom_path 对应 geom_beeswarm 点
- javascript - 无法使用 useEffect 和 axios 发布
- c - 为什么这个函数确实指向偏移量为 1 的自身?
- php - PHP http 代码 0 无法读取自定义标头