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();
        }
    }
}

C#--循环获胜';在Convert.ToInt32(..)之后不接受非数字输入

试试这个:使用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;环路