C#-尝试打印数组中的最后一个元素时发生异常

时间:2018-12-31 16:25:52

标签: c#

尝试打印数组中的最后一个元素时,我遇到了异常。

这是我的代码:

int[] nums = { 1, 2, 5, 7, 8 };

Console.WriteLine("first element is " + nums[0]);
int fe = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Last element is {0}" , nums[nums.Length - 1]);
int le = Convert.ToInt32(Console.ReadLine());

例外:

第一个元素为1

  

未处理的异常:System.FormatException:输入字符串的格式不正确。      在System.Number.StringToNumber处(字符串str,NumberStyles选项,NumberBuffer&数字,NumberFormatInfo信息,布尔值parseDecimal)      在System.Number.ParseInt32(String s,NumberStyles样式,NumberFormatInfo信息)      在System.Convert.ToInt32(字符串值)      在W2Resource.BasicExProb51.Main()中的C:\ Users \ SudhaPraveen \ Documents \ Visual Studio 2017 \ Projects \ CSharpPractice21DaysPlan \ W2Resource \ BasicExProb51.cs:第16行   按任意键继续 。 。

1 个答案:

答案 0 :(得分:2)

您的行:

Console.WriteLine("first element is " + nums[0]);
Console.WriteLine("Last element is {0}" , nums[nums.Length - 1]);

都是正确的。

您的例外来自

中的用户输入
Convert.ToInt32(Console.ReadLine());

只要您的用户键入一个可以解析为整数的值,它就会起作用。否则,它将引发您所看到的异常情况。

如果您不使用输入值,则可以将其替换为:

Console.ReadKey();

它将使程序“暂停”,直到用户按下键盘的随机键为止。

否则,如果需要使用它,则必须在使用之前验证输入。例如,建议您检查int.TryParse()方法的行为和用法。

以下是与您的问题类似的一个答案:https://stackoverflow.com/a/45259920/461444 但是它使用int.Parse()而不是建议的int.TryParse(),但效果不佳,因为它需要更多代码并引发无用且完全可以避免的异常。