所以我一直在这个程序的一部分上工作了几个小时。我有几行代码已经困扰了我一个多小时。这没有任何意义。我一遍又一遍地阅读这些台词,并在脑海中思考它应该做什么,但它没有这样做!这可能是我一直忽略的一些愚蠢的错误(通常发生在我身上..),或者可能是由于缺乏睡眠/过去几个小时一直在努力。
该程序很长,但我遇到问题的代码块只有几行 - 所以我只会在需要时发布整个内容。
好的,所以这里是应该做的快速运行:
我有一个向量,里面装满了手动设置的字符串(19 个,每个 79 个字符长)。这个一维向量将被视为二维向量 - 因为我试图保持它的基本。所以这个字符串向量,如果每行显示 1 个字符串,基本上会创建一个带有“.”矩形部分的网格。以及连接矩形部分的“#”路径。它应该得到一个 x 和 y 坐标,并传递给函数。它像二维向量一样循环并找到位置。它检查该位置的字符是否不是“。” 或 '#' 否则,它将字符更改为 X 以标记其位置。我使用有效的 x,y 坐标设置测试,该坐标是“。”的位置。- 问题就在我 cout "match found:::" 的行之后,当程序运行时,它显示 vLevel[i][j] = '.' 的值 但由于某种原因,它没有转到函数被调用 4 次的 else 语句,我把 cout 语句。这是网格的样子。空格是空格..每一行都是向量中的一个字符串:
.......
....... .......
.......##....... ..........................
....... ....... ..........................
....... .......................... ..........
....... ..........................#####..........
.......................... ..........
.......................... #
.......................... #
# #
# #
........ # ............ .......
........ # ............ .......
........ # ............ .... .......
........###############............ .... .......
........ ............####....
........ ............ ....
这是我正在处理的代码部分:
void markPosition(vector<string> & vLevel, int x, int y){
cout << "x: " << x <<endl;
cout << "y: " << y <<endl;
bool doubleCheck = true; //extra bool I added for testing purposes
for( int i = 0; i < vLevel.size(); i++ ){
for( int j = 0; j < vLevel[i].size(); j++ ){
//displays if x and/or y are out of range
if (doubleCheck){
if ((x < 0) || (x > vLevel[i].size())){
cout << "X is out of range!" << endl;
doubleCheck = false;
}
if ((y < 0) || (y > vLevel.size())){
cout << "Y is out of range!" << endl;
doubleCheck = false;
}
}
else {
return;
}
if ((j == x) && (i == y)){
//////THIS IS THE PROBLEM LOL
cout << "match found::: " << vLevel[i][j] << endl;
if ((vLevel[i][j] != '.') || (vLevel[i][j] != '#')){
cout << "Located in the blankness" << endl;
return;
}
else {
cout << "I don't get reached!!??" << endl;
vLevel[i][j] = 'X';
markPosition(vLevel,i-1,j);
markPosition(vLevel,i+1,j);
markPosition(vLevel,i,j+1);
markPosition(vLevel,i,j-1);
}
}
}
}
}
粘贴时间距搞砸了,所以我试着清理一下。我不明白为什么它会跳过其他。就像我说的,我敢肯定,一旦解决了这个问题,我会感到很愚蠢。我需要睡觉大声笑。
如果您需要更多信息,请告诉我。先谢谢了!