我正在为数学课做这个,并且无法使if-else语句起作用。有人能告诉我应该为else语句做些什么吗?我的想法是将一个向量传递给一个函数,每当函数看到“关闭”时,它就会将其更改为“打开”,反之亦然。编译器总是在if语句处停止,在向量中的第一个元素发生更改后没有任何内容:
string getValue(vector<string> &arr)
{
for(int i=2; i <=50; i++)
{
if(arr[i]=="close")
{
return arr[i]="open";
}
}
return "close";
}
答案 0 :(得分:2)
问题是return
。 if
语句第一次为真时,return
语句执行,从当前函数返回。据推测,您的意图是array[i] = "open";
就else
而言,根据您的描述,您需要以下内容:
else if (array[i] == "open")
array[i] = "close";
就我个人而言,我认为我会将其更改为使用数字,而相关的字符串则单独存储:
enum { OPEN, CLOSE };
static const int names[] = {"open", "close"};
然后您可以将OPEN
转换为CLOSE
,反之亦然,例如:
for (int &i : arr)
i = 1 - i;
答案 1 :(得分:1)
尝试:
void getValue(vector<string> &arr)
{
for(int i=0; i <arr.size(); i++)
{
if(arr[i]=="close")
{
arr[i]="open";
}
else if(arr[i]=="open")
{
arr[i]="close";
}
}
}