我想要做的是当使用我的程序的人在没有任何内容的情况下输入时,这不会导致错误,这是程序的一部分:
Console.WriteLine("4.-Ya no quiero jugar >.<");
int opc = Convert.ToInt16(Console.ReadLine());
switch (opc)
{
case 1:
Console.WriteLine("omg");
break;
case 2:
Console.WriteLine("wtf");
break;
default:
Console.WriteLine("Cant do that >.>");
Console.ReadKey();
break;
etc.
}
事情是使用整数,我试图这样做
string opc1=console.readline();
if (opc =="")
{
console.writeline("nope,try again");
}
else
{ // Brace was omitted in original - Jon
int opc = Convert.ToInt16(Console.ReadLine());
switch (opc)
blah blah.
及其的不同组合&gt;。并且默认不适用于
我希望有人可以帮我解决问题&gt;。&lt;
答案 0 :(得分:10)
检查Int16.TryParse
方法。
如果用户输入不是Int16
允许的范围内的数字(负32768到正32767),这将允许您退出程序或执行其他操作。
示例代码可以在MSDN条目(Int16.TryParse Method)上找到。
答案 1 :(得分:4)
首先,将Console.ReadLine()
设置为变量。
然后检查您设置的变量是否为空或为空。另外,我建议使用Int16类的TryParse方法,因为它返回true或false,具体取决于转换是否成功。
此外,您不需要将ReadLine
转换为整数,因为您也可以打开字符串。由于ReadLine
已经是String
,因此无需转换。但是,如果您需要整数,请尝试以下方法:
String lineIn = Console.ReadLine();
if (!String.IsNullOrEmpty(lineIn))
{
Int16 myNum;
if (Int16.TryParse(lineIn , out myNum))
{
switch(myNum)
{
case 1:
...
default:
...
}
}
}
答案 2 :(得分:1)
我认为你想要的是int.Parse(...)
答案 3 :(得分:0)
您可能会考虑使用try catch语句进行错误处理......
答案 4 :(得分:0)
的TryParse:
string str;
short val;
while(!short.TryParse(str=Console.ReadLine(), out val))
{
Console.WriteLine("Cant do that >.>");
}
答案 5 :(得分:0)
为了获得整数,我通常使用像这样的递归函数
private int GetInt()
{
try
{
return int.parse(Console.Readline().Trim());
}
catch (exception e)
{
Console.WriteLine(string.format("{0} Please try again", e.message);
return GetInt();
}
}