C#--循环获胜';在Convert.ToInt32(..)之后不接受非数字输入
本文关键字:之后 不接受 数字输入 ToInt32 Convert 获胜 循环 C#-- | 更新日期: 2023-09-27 18:26:03
当我尝试输入退出字符串xxx时,它为什么会抛出异常?它在while循环中工作,但在do。。。而循环。
转换为integer后,字符串变量只允许我使用数字字符(如-999)退出do。。。而循环。但我想让循环控制变量变成一个像"退出"这样的词,而不是数字。我该怎么做?
这是我的密码。
using System;
namespace StringInputPractice
{
class StringInputPractice
{
static void Main()
{
// Declarations
string inValue;
int first;
int second;
int sum;
do
{
Console.Write("'nEnter the first number. (Type '"xxx'" to exit): ");
inValue = Console.ReadLine();
first = Convert.ToInt32(inValue); //@@@@@
Console.Write("'nEnter the second number. (Type '"xxx'" to exit): ");
inValue = Console.ReadLine();
second = int.Parse(inValue);
sum = first + second;
Console.WriteLine("'nThe sum of {0} and {1} is {2}.", first,
second, sum);
/* Things I've tried inside do { } and that don't work */
//inValue = "";
//inValue = null;
//inValue = inValue.ToString();
//inValue = first.ToString();
//inValue = second.ToString();
}
while (inValue != "xxx"); /*If you enter a non-numeric string,
* an exception is thrown at
* @@@@@ above.
*/
Console.ReadLine();
}
}
}
试试这个:使用int.TryParse而不是Convert.ToInt32
public void myfun()
{
string inValue;
int first;
int second;
int sum;
do
{
Console.Write("'nEnter the first number. (Type '"xxx'" to exit): ");
inValue = Console.ReadLine();
if (int.TryParse(inValue, out first))
{
// first = Convert.ToInt32(inValue); //@@@@@
Console.Write("'nEnter the second number. (Type '"xxx'" to exit): ");
inValue = Console.ReadLine();
if(int.TryParse(inValue, out second))
{
// second = int.Parse(inValue);
sum = first + second;
Console.WriteLine("'nThe sum of {0} and {1} is {2}.", first,
second, sum);
}
}
/* Things I've tried inside do { } and that don't work */
//inValue = "";
//inValue = null;
//inValue = inValue.ToString();
//inValue = first.ToString();
//inValue = second.ToString();
}
while (inValue != "xxx"); /*If you enter a non-numeric string,
* an exception is thrown at
* @@@@@ above.
*/
Console.ReadLine();
}
您使用什么程序进行编码?大多数程序都允许您调试应用程序。这意味着您可以冻结程序并逐行运行。在每一行上,你都可以检查变量的值,如果有异常,你就可以看到它
您的错误是由以下行引起的:first=Convert.ToInt32(inValue);
您需要首先检查是否没有将字母转换为数字(因为这会导致异常)。您可以尝试Int32.TryParse()或其他选项。
如何将xxx转换为数字?这是不可能的!
我会做的是:
在得到inValue之后,立即生成if语句,检查它是否为xxx,就像while()中的那样,如果为true,则break;环路