C# 嵌套循环多维数组搜索
有一个愚蠢的问题,我正在努力解决 我试图使用嵌套for循环逐步遍历一个C#多维数组,但我无法得到我想要的结果,我认为这只是我的代码中的一个愚蠢的问题C# 嵌套循环多维数组搜索,c#,C#,有一个愚蠢的问题,我正在努力解决 我试图使用嵌套for循环逐步遍历一个C#多维数组,但我无法得到我想要的结果,我认为这只是我的代码中的一个愚蠢的问题 string search = txtString.Text; int iLoop; int jloop; int iResult = -1; for (iLoop = 0; iLoop < sounds.GetLength(0) ; iLoop++) {
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);
}
}
string search=txtString.Text;
int iLoop;
int-jloop;
int-iResult=-1;
for(iLoop=0;iLoop
它搜索数组,如果找到答案,则返回一个肯定结果,但结果位置始终为“result found at position 1”
我做错了什么?有两个索引需要查找:jloop和iLoop,您可能会在2D数组中得到不同的jloop值您只存储一个维度(
iResult
)。它可以始终为1,但第二维度(jresult
)可能会有所不同
并提醒未来的项目使用不同的语言。请尝试对字符串使用
if(result==search)
。使用Equal
或Compare方法
同时检查所用参数的名称,有时称之为iLoop
,有时称之为iLoop
。
保持一致!:)
我猜答案总是在第1行,您只需弹一下
I
值,同时打印j
值jLoop
请记住,即使找到匹配项,此代码片段仍将继续搜索。事实上,你找到的是匹配文本的最后一个位置
另外,您可以同时报告匹配的
iLoop
和jLoop
,而不是只报告匹配的iLoop
。或者,您可以将单个索引报告为iLoop*sounds.GetLength(0)+jLoop
可能是因为结果总是在第一行?如何声明sounds
以及分配给它的内容?顺便说一句,在您的代码概念中,位置
对应于行
的数量,而不是成对的行、列
。这是故意的吗?@aleksey.berezan第二排实际上,因为0=第一排?@rbaryyoung,我有一个习惯称第0位为zeroth
,第1位为first
。但是为了方便起见,让它成为第1行=第2行:)在C#中,=
对于原语和字符串来说是非常好的。。。但如果他换用Java或其他语言,会给初学者带来很多麻烦。更好的方法是在所有语言中使用相同的表示法,您可以确定,您已经使用了它(OK:)