【问题标题】:Take a Console.ReadLine(); input and put it into a List<Int32>? [duplicate]拿一个 Console.ReadLine();输入并将其放入 List<Int32>? [复制]
【发布时间】:2019-11-23 02:14:08
【问题描述】:

这是我所拥有的一些内容的片段。C#FrameworkConsole 应用程序

namespace Arraylab
{
    class Program
    {
        static void Main(string[] args)
        {

            Console.WriteLine("Please guess a number, zero if you must.");
            int guessedNumber = 1;

            try
            {
                guessedNumber = Convert.ToInt32(Console.ReadLine());
            }
            catch (Exception)
            {
                Console.WriteLine("You did not make the right entry. Please hit Enter and try again.");
                Console.ReadLine();
                Environment.Exit(0);
            }
            //This will end the program if its not a number that is entered. 

            List<Int32> guessedNumbers = new List<int>;


            guessedNumbers.AddRange(guessedNumber); //It wont accept this guessedNumber varriable.
        }
    }
}

【问题讨论】:

  • 使用 Add 而不是 AddRange 将单个条目添加到列表中
  • 我在类的顶部声明了guessedNumber 变量。但是列表不会接受该变量作为存储在列表中的变量。
  • 好的。我会试试的。谢谢。

标签: c#


【解决方案1】:

首先:而不是ConvertTo.Int32 并捕获异常,更好的做法是使用int.TryParse,如果无法解析字符串,则返回false。然后您可以消除try。请记住,避免异常总是比捕获异常更好。

其次,如果您打算使用异常处理,“口袋妖怪处理”——必须全部捕获——当你知道你期待什么异常时,这是一个不好的做法。捕获特定的异常。

它不会接受这个guessedNumber 变量。

guessedNumbers.AddRange(guessedNumber);

AddRange元素序列添加到列表中,而不是单个元素。使用Add 将单个元素添加到列表的末尾。

【讨论】:

  • @RufusL:这很奇怪。我不知道,也没有时间深入研究,但我对发布的答案做了有根据的猜测。
【解决方案2】:

使用 add 而不是 addrange。这将接受一个 int

编辑:这不是一个正确的答案吗?

【讨论】:

    猜你喜欢
    • 2022-11-29
    • 2013-09-06
    • 1970-01-01
    • 2015-05-29
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 2016-05-14
    • 1970-01-01
    相关资源
    最近更新 更多