我是C ++的新手,并且已经盯着我的(可能非常糟糕的)代码了一段时间,并且无法弄清楚它是什么。
我正在尝试循环遍历if和else语句的几次迭代,并且必须在语法上做错误的事情 - 因为它显示'else without a previous if'的编译器错误
这是为了上课,我正在努力解决这个问题,但是如果你看到一些明显我忽略的东西,我很想知道。
谢谢!
for (i = 0; i < iterationsNum; i++){
if (charlieAlive == 0) // Aarron's shot
{
if (aaronShot() == 1)
charlieAlive = 1;
}
else (charlieAlive == 1 && bobAlive == 0);{
if (aaronShot() == 1)
bobAlive = 1;
}
else (charlieAlive == 1 && bobAlive == 1 && aaronAlive == 0);{
cout << "Aaron is the Winner!\n";
totalShot++;
aaronCounter++;
}
continue;
if (charlieAlive == 0 && aaronAlive ==0) // Bob's shot
{
if (bobShot() == 1)
charlieAlive = 1;
}
else (charlieAlive == 1 && aaronAlive == 0);{
if (bobShot() == 1)
aaronAlive = 1;
}
else (charlieAlive == 1 && aaronAlive == 1 && bobAlive == 0);{
cout << "Bob is the Winner!\n";
bobCounter++;
totalShot++;
}
continue;
if (charlieAlive == 0 && bobAlive == 0) // Charlie's shot
{
bobAlive = 1;
}
else (charlieAlive == 0 && bobAlive == 1 && aaronAlive == 0);{
aaronAlive = 1;
totalShot++;
}
else (charlieAlive == 0 && bobAlive == 1 && aaronAlive == 1);{
cout << "Charlie is the Winner!\n";
}
continue;
答案 0 :(得分:5)
else
没有任何条件,但你写的是:
else (charlieAlive == 1 && bobAlive == 0); //else : (notice semicolon)
这不符合您的意图。
你想做什么:
else if (charlieAlive == 1 && bobAlive == 0) //else if : (semicolon removed)
注意区别。
此外,最多可以有一个else
块,与if
块或if, else-if, else-if
块链相关联。也就是说,你可以这样写:
if (condition) {}
else {}
或者,
if (condition0) {}
else if (condition1) {}
else if (condition2) {}
else if (condition3) {}
else if (condition4) {}
else {}
在任何情况下,else
阻止总是最后一个阻止。之后,如果您编写另一个else
块,那将是一个错误。
除此之外,你在错误的地方也有一个分号。修正了:
else (charlieAlive == 1 && bobAlive == 0); <---- remove this semicolon!
希望有所帮助。
选择一本好的入门C ++书。以下是所有级别的建议。
答案 1 :(得分:2)
我在这里看到几个问题:
答案 2 :(得分:1)
你不能把条件陈述放在else
陈述
更正所有其他语句
就像else (charlieAlive == 1 && bobAlive == 0);
else
只是if
的替代流程 - 即
if(condition) // if this fails go to else part
{
--- // if condition true execute this
}
else{
--- // will run when condition in if fails
}
所以你不必为else语句添加条件
修改强>
else if
处于条件状态的地方
好像你想这样做
else if(your condition statements)
//注意:最后没有分号