将你的程序作如下修改:
或者,我写了一个LINQ的实现:
程序示例代码:
注:以下程序使用的是C# 10(.NET 6)实现。
using System;
using System.Linq;
namespace ConsoleApp1
{
internal class Program
{
private static void Main(string[] args)
{
// 创建一个原始的包含26个小写英文字母([a-z])的字符数组
var alphalets = Enumerable.Range('a', 26)
.Select(x => (char)x)
.ToList();
Console.WriteLine("26个小写英文字母([a-z])的字符数组为:");
Console.WriteLine(string.Join(",", alphalets));
Console.WriteLine("请输入a-z的任意字符串...");
var input = Console.ReadLine()?
.ToLower() // 将用户输入全部转换成小写
.ToArray(); // 将用户输入的字符串转换成字符(char)数组
// 如果用户没有输入,则返回(不往下继续执行)
if (input is not { Length: > 0 })
{
Console.WriteLine("请输入字符串...");
return;
}
// 使用LINQ的Select方法遍历用户输入的字符数组,然后用IndexOf方法找到每个用户输入的字符在原始字符数组中的索引位置
var result = input.Select(x => new Result(x, alphalets.IndexOf(x)));
// 输出结果
foreach (var item in result)
{
Console.WriteLine($"字符{item.Alphalet}所在位置:{item.Display}");
}
Console.ReadKey();
}
}
internal record Result(char Alphalet, int Index)
{
public string Display => Index == -1 ? "未找到" : Index.ToString();
}
}
异常?什么异常啊?报错呢
将两个for语句中的小于等于换为小于代码语法错误,检查代码
你这个肯定数组越界了呀,小于长度,下标从0开始的