我想创建一个5x5的''数组,在中间用一个#号标签,而不是'',但是仅当用户输入'a'或'b'时才可以。在我标记为“正确的位置”的区域上,除非它只有“ a” /只有“ b”,否则它不会起作用,那么我该怎么办?预先谢谢你!
#include <iostream>
using namespace std;
int main()
{
while (true){
///Variables:
char array[4][4]; //Playing field 5x5
char direc; //Direction player moves
for (int x = 0; x <=4; x++){
for (int y = 0; y <= 4; y++){
array[x][y] = '_';
if (direc != 'a' || 'b'){ ///RIGHT HERE!
array[2][2] = '#';
}
cout << array[x][y]; //Starts printing Board
if (y == 4){
cout << endl; //Cuts to next line on print if 4 in a column row
}
}
}
cin >> direc;
cin.get();
}
}
答案 0 :(得分:1)
没有检查语句或程序其他部分所需的逻辑,但标记的语句应写为
(direc != 'a' || direct != 'b')
您的语句(direc != 'a' || 'b')
将始终为true,因为作为逻辑或运算符'b'
的第二个操作数的||
是大于0的整数(表示字符b
(以某种编码)),因此被视为true
。
答案 1 :(得分:0)
正如Neil在评论中提到的那样,您的5x5字段实际上是4x4,因此您只能访问array [0] [0]到array [3] [3],而您的X和Y为4一点。您应该改用以下方法:
char array[5][5]
以便您可以访问数组直到索引4
答案 2 :(得分:0)
希望对您有帮助
#include <iostream>
using namespace std;
int main()
{
///Variables:
char array[5][5]; //Playing field 5x5
char direc; //Direction player moves
char player;
while (true) {
//get direc
cin >> direc;
cout << direc << "\n";
if (direc == 'a' || direc == 'b') { ///RIGHT HERE!
player = '_';
}
else {
player = '#';
}
for (int x = 0; x <= 4; x++) {
for (int y = 0; y <= 4; y++) {
array[x][y] = '_';
if (x == 2 && y == 2) {
array[x][y] = player;
}
cout << array[x][y]; //Starts printing Board
if (y == 4) {
cout << endl; //Cuts to next line on print if 4 in a column row
}
}
}
}
}