切换声明

tin*_*tes 1 c# switch-statement

嗨,我正在练习程序中的"Switch Loop".我正在编写一个用户可以输入整数的代码,在用户输入整数后,它还会显示用户输入的内容.现在我正在尝试实现程序要求用户输入的位置通过选择Y/N再次编号.我已将它包含在我的代码中但是如果我在第一次输入字符时要求我输入一个整数,程序将执行catch部分.我怎样才能说明如果用户输入一个字符,它也会再次显示该消息,"请输入整数:"

谢谢你的帮助,我在这里的某个地方迷路了.

          int enterYourNumber;
          char shortLetter;

            try
            {
                Console.WriteLine("Please enter the integer: ");
                enterYourNumber = Convert.ToInt32(Console.ReadLine());
                WriteNumber(enterYourNumber);

                Console.WriteLine("Do you still want to enter a number? Y/N");
                shortLetter = Convert.ToChar(Console.ReadLine());

                while (shortLetter == 'y' || shortLetter == 'Y')
                {
                    Console.WriteLine("Please enter the integer: ");
                    enterYourNumber = Convert.ToInt32(Console.ReadLine());
                    WriteNumber(enterYourNumber);

                    Console.WriteLine("Do you still want to enter a number? Y/N");
                    shortLetter = Convert.ToChar(Console.ReadLine());
                }

            }
            catch
            {                                        
                Console.WriteLine("Please enter an integer not a character");
            }
        }

            public static void WriteNumber(int wordValue)
            {

            switch (wordValue)
            {
                case 1:
                    Console.WriteLine("You have entered number one");
                    break;
                case 2:
                    Console.WriteLine("You have entered number two");
                    break;
                case 3:
                    Console.WriteLine("You have entered number three");
                    break;
                default:
                    Console.WriteLine("You have exceeded the range of number 1-3 ");
                    break;
            }
Run Code Online (Sandbox Code Playgroud)

======================

这就是我所做的我不知道为什么我会收到错误.新方法似乎不起作用:

        int enterYourNumber;
        char shortLetter;


          do
        {
            enterYourNumber = GetNumber();
            WriteNumber(enterYourNumber);                
            Console.WriteLine("Do you still want to enter a number? Y/N");
            shortLetter = Convert.ToChar(Console.ReadLine());
         }
       while (shortLetter == 'y' || shortLetter == 'Y')
        {
            Console.WriteLine("Please enter the integer: ");
            enterYourNumber = Convert.ToInt32(Console.ReadLine());
            WriteNumber(enterYourNumber);

            Console.WriteLine("Do you still want to enter a number? Y/N");
            shortLetter = Convert.ToChar(Console.ReadLine());
        }
    }



       public static int GetNumber() 
       {
       bool done = false;
       int value;
       while ( !done ) 
        {
            Console.WriteLine("Please enter the integer: ");
        try 
        {
            value = Convert.ToInt32(Console.ReadLine());
            done = true;
        }
       catch 
        {
            Console.WriteLine("Please enter an integer not a character");
        }
        }
       }
Run Code Online (Sandbox Code Playgroud)

=============

嗨比尔这是你给出的例子,似乎我仍然得到一个错误:你能不能取悦代码.非常感谢你:

    public static void Main(string[] args)
    {
        int enterYourNumber;
        char shortLetter;



        do
        {
            enteryourNumber = GetNumber();
            WriteNumber(enteryourNumber);
            Console.WriteLine("Do you still want to enter a number? Y/N");
            shortLetter = Convert.ToChar(Console.ReadLine());
        } 
        while (shortLetter == 'y' || shortLetter == 'Y');
    }


    public static int GetNumber()
    {
        bool done = false;
        int value;
        while (!done)
        {
            Console.WriteLine("Please enter the integer: ");
            try
            {
                value = Convert.ToInt32(Console.ReadLine());
                done = true;
            }
            catch
            {
                Console.WriteLine("Please enter an integer not a character");
            }

            Console.WriteLine("Please enter the integer: ");
            enterYourNumber = Convert.ToInt32(Console.ReadLine());
            WriteNumber(enterYourNumber);
            Console.WriteLine("Do you still want to enter a number? Y/N");
            shortLetter = Convert.ToChar(Console.ReadLine());   
        }
    }

    public static void WriteNumber(int wordValue)
    {

        switch (wordValue)
        {
            case 1:
                Console.WriteLine("You have entered number one");
                break;

            case 2:
                Console.WriteLine("You have entered number two");
                break;

            case 3:
                Console.WriteLine("You have entered number three");
                break;

            default:
                Console.WriteLine("You have exceeded the range of number 1-3 ");
                break;
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

}

=================

嗨再次这个问题是罗伯特.这就是我现在所做的,但是如果我输入"N",它将不会退出程序.它仍然问同样的问题.任何想法:谢谢:

    public static void Main(string[] args)
    {
        int enterYourNumber;
        char shortLetter;
        bool validEntry;



        while (true)
        {
            do
            {
                Console.WriteLine("Please enter an integer: ");
                string numberString = Console.ReadLine();
                validEntry = int.TryParse(numberString, out enterYourNumber);
                WriteNumber(enterYourNumber);
                if (!validEntry)
                {
                    Console.WriteLine("Entry must be an integer");
                }
            } while (!validEntry);

            Console.WriteLine("Do you still want to enter a number? Y/N");
            shortLetter = Convert.ToChar(Console.ReadLine());


        }
     }




    public static void WriteNumber(int wordValue)
    {
        switch (wordValue)
        {
            case 1:
                Console.WriteLine("You have entered number one");
                break;
            case 2:
                Console.WriteLine("You have entered numbered two");
                break;
            case 3:
                Console.WriteLine("You have entered numbered three");
                break;
            default:
                Console.WriteLine("You have exceeded the range of number 1-3");
                break;
        }
    }
}
}
Run Code Online (Sandbox Code Playgroud)

}

====================================

嗨罗伯特和比尔这里是我现在得到的.如果您能就如何改进编码提出一些想法,将不胜感激.谢谢你的帮助.

     public static void Main(string[] args)
     {
        int intEnterYourNumber;
        char charShortLetter;
        string strUserInput;

        do
        {
            do
            {
                Console.WriteLine("Please enter the integer: ");
                strUserInput = Console.ReadLine();
            } while (!int.TryParse(strUserInput, out intEnterYourNumber));
            WriteNumber(intEnterYourNumber);
            Console.WriteLine("Do you still want to enter a number? Y/N");
            charShortLetter = Convert.ToChar(Console.ReadLine().ToUpper());
        } while (charShortLetter == 'Y');
    }



    public static void WriteNumber(int wordValue)
    {
        switch (wordValue)
        {
            case 1:
                Console.WriteLine("You have entered number one");
                break;
            case 2:
                Console.WriteLine("You have entered numbered two");
                break;
            case 3:
                Console.WriteLine("You have entered numbered three");
                break;
            default:
                Console.WriteLine("You have exceeded the range of number 1-3");
                break;
        }
    }
Run Code Online (Sandbox Code Playgroud)

Rob*_*ino 8

我认为如果您没有使用例外来测试您的数字,您的代码将更容易学习和理解.尝试使用int.TryParse()代替(MSDN上的TryParse()).TryParse()返回true(或false),具体取决于输入的数字是否有效:

int number;
bool validEntry = int.TryParse(enterYourNumber, out number);
if (!validEntry)
{
    Console.WriteLine("Entry must be an integer.");
}
Run Code Online (Sandbox Code Playgroud)

另外,了解do ... while循环(链接).do..while循环类似于常规while循环,除了在评估条件表达式之前执行一次do-while循环.

bool validEntry;
int enteredNumber;
do
{
    Console.Write("Please enter the integer: ");
    string numberString = Console.ReadLine();
    validEntry = int.TryParse(numberString, out enteredNumber);
    if (!validEntry)
    {
        Console.WriteLine("Entry must be an integer.");
    }
} while (!validEntry);
Run Code Online (Sandbox Code Playgroud)

在循环中将整个东西包裹在另一个循环中("你还想输入一个数字(Y/N)吗?")你已经完成了.

请享用,

Robert C. Cartaino