【问题标题】:"Wrong number of indices inside [];expected 2" error for two-dimensional array in C#C# 中二维数组的“[] 内的索引数量错误;预期为 2”错误
【发布时间】:2015-10-08 13:18:58
【问题描述】:

您好,我是初学者 c# 学习者,据我所知,我在这里做错了,但不知道在哪里,有人知道吗?

namespace translateTelNum
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        String originalContent = "";
        originalContent = box1.Text.ToUpper();

        char[,] charGroup = new char[,]
       {
        {'A','B','C' }, 
        {'D','E','F' },              
        {'G','H','I' }, 
        {'J','K','L' }, 
        {'M','N','O' },
        {'P','R','S' }, 
        {'T','U','V' }, 
        {'W','X','Y' } 
       };

        String numbers = "";

        for (int i = 1; i <= originalContent.Length; i++)
        {
            for (int a = 1; a <= charGroup.Length; a++)
            {
                for (int b = 1; b <= charGroup[a].Length; b++)
                {
                    if (originalContent[i] == charGroup[a][b])
                    {
                        numbers += a + 2;
                    }
                }
            }
            if (i == 2 && i== 7)
            {
                numbers += "-";
            }
        }

        Console.WriteLine(numbers);
    }
}
}

以下行出现错误“[] 内的索引数量错误;预期为 2”:

for (int b = 1; b <= charGroup[a].Length; b++)
    if (originalContent[i] == charGroup[a][b])

【问题讨论】:

    标签: c# arrays multidimensional-array indexing indices


    【解决方案1】:

    而不是使用

    for (int a = 1; a <= charGroup.Length; a++)
    {
        for (int b = 1; b <= charGroup[a].Length; b++)
        {
            if (originalContent[i] == charGroup[a][b])
    

    你应该使用

    for (int a = 1; a <= charGroup.GetLength(0); a++)
    {
        for (int b = 1; b <= charGroup.GetLength(1); b++)
        {
            if (originalContent[i] == charGroup[a,b])
    

    有两件事需要改变。

    首先,不要使用charGroup.LengthcharGroup[a].Length,您应该使用方法GetLength(dimension) 来获取特定维度的长度。因此,在这种情况下,为了获得应该使用GetLength(0) 的行数并获得应该使用GetLength(1) 的列数。见documentation of GetLength on MSDN

    其次,C# 多维数组由 array[index1, index2, ..., indexN] 访问,而不是由 array[index1][index2] ... [indexN] 访问。见documentation on MSDN

    另外请记住,C# 中数组的索引从 0 开始,因此您的循环很可能应该从 0 而不是 1 开始:

    for (int a = 0; a < charGroup.GetLength(0); a++)
    {
        for (int b = 0; b < charGroup.GetLength(1); b++)
        {
            if (originalContent[i] == charGroup[a,b])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 2020-05-11
      • 1970-01-01
      • 2010-09-26
      • 2019-03-28
      • 2020-06-15
      • 2018-07-05
      相关资源
      最近更新 更多