Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.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#_Int_Boolean - Fatal编程技术网

C# 用户输入文本而非整数值的程序量化

C# 用户输入文本而非整数值的程序量化,c#,int,boolean,C#,Int,Boolean,我只是浏览一下我的代码,我试图解决一个问题,当用户以文本形式在菜单中输入选项时,如何让程序停止退出控制台。例如,他们想选择选项“1”,但决定键入单词“1” 谢谢 丹 int numbersreqd=5; int chosenOption=0; bool-quit=false; Console.WriteLine(“********************************************************************************************

我只是浏览一下我的代码,我试图解决一个问题,当用户以文本形式在菜单中输入选项时,如何让程序停止退出控制台。例如,他们想选择选项“1”,但决定键入单词“1”

谢谢 丹

int numbersreqd=5;
int chosenOption=0;
bool-quit=false;
Console.WriteLine(“**********************************************************************************************************************************”);
Console.WriteLine(“*此应用程序旨在允许您选择数字的数量*”);
Console.WriteLine(“*您希望输入,并对您提供的数字求和。*”);
Console.WriteLine(“**********************************************************************************************************************************”);
while(quit==false)
{
显示菜单();
chosenOption=ReadNumber(“请选择一个选项:”);
quit=ProcessMenu(chosenOption,ref numbersreqd);
}
}
静态void显示菜单()
{
Console.WriteLine(“选择选项”);
Console.WriteLine(“1.添加数字”);
Console.WriteLine(“2.更改要输入的数字量”);
控制台。写入线(“3.退出”);
}
静态int ReadNumber(字符串提示)
{
字符串文本;
整数;
控制台。写入(提示);
text=Console.ReadLine();
number=int.Parse(文本);
返回号码;
}
静态布尔进程菜单(int选项,ref int numbers)
{
bool-quit=false;
开关(选件)
{
案例1:
整数合计;
总计=总计(numNumbers);
DisplayResult(total);//程序最初设置为显示用户从“displayMenu”输入的选项,通过将variabel从选项更改为total,现在将显示用户输入的数字的答案
打破
案例2:
numNumbers=ReadNumber(“请输入要输入的数字:”);
打破
案例3:
quit=正在退出();
打破
违约:
Console.WriteLine(“输入的选项值未知”);
打破
}
返回退出;
}
静态int GetTotal(int numbersReqd)
{
整数合计;
整数指数;
总数=0;
对于(索引=0;索引
您可以使用int32.TryParse()而不是int.Parse()。 解析失败时,该值将为0,然后您可以采取相应的行动。

使用以下方法:

int number;

while (!int.TryParse(Console.ReadLine(), out number)) // make sure that the user enters a valid number
    Console.WriteLine("You did not enter a valid number");
// here number will have the value entered by the user.
TryParse
将返回
true
false
,如果第一个参数是有效整数,并且该值使用
out
关键字分配给第二个参数

“Regular”
Parse
会将字符串转换为整数,如果字符串不是有效整数,则会引发异常

编辑:Cfrozendath建议对我的帖子进行一次很好的编辑,它将
TryParse
封装在
while
循环中。实际上,这将从用户那里获得输入,直到他们输入一个有效的数字。这通常被认为是一个好主意;如果他们意外地输入了错误的内容,你很可能不想这样做立即退出/结束程序即可


但是,
while
条件中没有逻辑来检查值是否“有效”从需求的角度来看。您的菜单有3个选项,但如果输入100,则输入的是数学上有效的整数,但不是应用程序的有效整数。因此,您可能还需要添加一两个条件,以检查
number
是否在可接受的范围内。

您的代码无法编译,因为它缺少m第一个方法的ethod声明。另外,您的问题不是很清楚,请尝试重新表述。请使用int.Parse代替int.TryParse检查用户是否输入了有效的整数,如果没有,您可以再次提示(并附加一条消息,说明输入无效)。好的,谢谢标记!只是尝试更改为int.TryParse(文本)但它显示出一种error@DanLewis查看我的答案。
TryParse
采用两个参数,
int number;

while (!int.TryParse(Console.ReadLine(), out number)) // make sure that the user enters a valid number
    Console.WriteLine("You did not enter a valid number");
// here number will have the value entered by the user.