尝试打印数组中的最后一个元素时,我遇到了异常。
这是我的代码:
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行 按任意键继续 。 。
答案 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()
,但效果不佳,因为它需要更多代码并引发无用且完全可以避免的异常。