嵌套For循环多维数组搜索

本文关键字:数组 搜索 For 循环 嵌套 | 更新日期: 2023-09-27 18:14:31

我有一个很傻的问题。

我试图一步通过c#多维数组使用嵌套的循环,但我不能得到我想要的结果,我认为这只是一个愚蠢的问题与我的代码。

string search = txtString.Text;
        int iLoop;
        int jloop;
        int iResult = -1;
        for (iLoop = 0; iLoop < sounds.GetLength(0) ; iLoop++)
        {
            for (jloop = 0; jloop < sounds.GetLength(1) ; jloop++)
            {
                string result;
                result = sounds[iLoop,jloop];
                if (result == search)
                {
                    iResult = iloop;
                }
            }
        }
            if (iResult == -1)
            {
                MessageBox.Show("Result not found");
            }
            else
            {
                MessageBox.Show("Result found at position " + iResult);                    
            }            
    }

它搜索数组,如果找到答案,则返回一个正结果,但结果位置始终是" result found at position 1"。

我做错了什么?

嵌套For循环多维数组搜索

您只存储一个维度(iResult)。它可以总是1,但第二次元(jresult)可以变化。

为将来的不同语言项目做个提示。尽量不要使用if (result == search)的字符串。使用EqualCompare methods

有两个索引要查找:jloop和illoop,可能您会在2D数组中获得各种jloop值

还要检查您使用的参数的名称,有时您将其称为iLoop,有时称为iloop。是一致的!:)

我猜答案总是在第1行,你只是打开i值,也打印jjLoop

请记住,即使找到匹配项,该代码片段也将继续搜索。因此,实际上您要查找的是匹配文本的最后一个位置。

作为题外话,也许您可以同时报告匹配的iLoopjLoop,而不是只报告匹配的iLoop。或者,您可以将单个索引报告为iLoop * sounds.GetLength(0) + jLoop