在这个while循环中,我会检查我试图放入矩阵的单词是否适合。
检查matrix[i]
是空的还是空格,或者与word[i]
的字符是否相同。
我的问题是,当涉及到人物不匹配或matrix[i]
不为空的地方时,while循环不会停止。使用Console.WriteLine
我写出了字符,看看会出现什么问题。
private bool Crossing(string word, int _row, int _col, int x, int y)
{
int i = 0;
bool l;
bool crossing = ((matrix[(i * x) + _row, (i * y) + _col] == word[i]) || (matrix[(i * x) + _row, (i * y) + _col] == ' '));
while(i < word.Length && crossing)
{
Console.WriteLine(i + ". char in matrix: " + matrix[(i * x) + _row, (i * y) + _col]);
Console.WriteLine("i + ". char in word: " + word[i]);
i++;
}
l = i >= word.Length;
Console.WriteLine(l);
return l;
}
答案 0 :(得分:1)
可能你需要将布尔变量crossing
的设置放在循环中,否则退出该循环的唯一方法是当我达到word
长度
private bool Crossing(string word, int _row, int _col, int x, int y)
{
int i = 0;
bool l;
bool crossing = true;
while(i < word.Length && crossing)
{
Console.WriteLine(i + ". char in matrix: " + matrix[(i * x) + _row, (i * y) + _col]);
Console.WriteLine("i + ". char in word: " + word[i]);
crossing = ((matrix[(i * x) + _row, (i * y) + _col] == word[i]) || (matrix[(i * x) + _row, (i * y) + _col] == ' '));
i++;
}
l = i >= word.Length;
Console.WriteLine(l);
return l;
}
答案 1 :(得分:0)
您没有刷新crossing
变量:
while(i < word.Length && crossing)
{
Console.WriteLine(i + ". char in matrix: " + matrix[(i * x) + _row, (i * y) + _col]);
Console.WriteLine("i + ". char in word: " + word[i]);
i++;
crossing = ((matrix[(i * x) + _row, (i * y) + _col] == word[i]) || (matrix[(i * x) + _row, (i * y) + _col] == ' '));
}