C#数组首尾元素相等校验:键盘输入实现求助
C#数组首尾元素判断问题修复
我需要编写一个C#程序,判断长度≥1的整数数组首尾元素是否相等。固定输入的代码能正常运行,但自己写的键盘输入数组的代码无法得到正确结果,求帮忙修复。
测试数据
Array1: [1, 2, 2, 3, 3, 4, 5, 6, 5, 7, 7, 7, 8, 8, 1]
示例输出
True
正确的固定输入代码
int[] numbers = { 1, 2, 2, 3, 3, 4, 5, 6, 5, 7, 7, 7, 8, 8, 1 }; Console.WriteLine((numbers.Length >= 1) && (numbers[0].Equals(numbers[numbers.Length - 1])));
自行尝试的代码
int[] arr = new int[100]; int i, num = 0; Console.WriteLine("Write size of array: "); num = Convert.ToInt32(Console.ReadLine()); Console.WriteLine("Write " + num + " elements in the array: "); for (i = 0; i < num; i++) { arr[i] = Convert.ToInt32(Console.ReadLine()); } Console.WriteLine((arr.Length >= num) && (arr[0].Equals(arr[arr.Length - num])));
问题分析与修复
你的代码存在两个关键错误:
- 数组长度处理错误:你初始化了长度为100的数组,但实际有效元素只有前
num个,尾元素的索引应该是num - 1,而非arr.Length - num(这会指向数组末尾附近的空元素)。 - 判断条件无效:
arr.Length >= num永远为真(因为数组长度固定是100),正确的判断应该是num >= 1,确保用户输入的数组长度符合要求。
另外,原代码没有输入验证,遇到非整数输入会直接报错,建议加上输入合法性校验。
修正后的代码
Console.WriteLine("请输入数组长度: "); // 验证输入是否为有效正整数 if (!int.TryParse(Console.ReadLine(), out int num) || num < 1) { Console.WriteLine("请输入一个大于等于1的有效整数"); return; } // 创建对应长度的数组,避免空间浪费 int[] arr = new int[num]; Console.WriteLine($"请输入{num}个数组元素: "); for (int i = 0; i < num; i++) { // 确保每个输入都是有效整数 while (!int.TryParse(Console.ReadLine(), out arr[i])) { Console.WriteLine("请输入有效的整数"); } } // 核心判断逻辑 bool result = num >= 1 && arr[0] == arr[num - 1]; Console.WriteLine(result);
内容的提问来源于stack exchange,提问作者qwatro_
相关产品推荐
相关产品推荐

