You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 13:03:14