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