为什么我在for循环中得到'Else without previous if'错误?

时间:2013-02-21 05:50:10

标签: c++ syntax if-statement

我是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;

3 个答案:

答案 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)

我在这里看到几个问题:

  1. 你的其他陈述中有分号 - 这些分号不应该在那里
  2. 对于单个if,您有多个else子句。当你评估另一个条件时,请使用'else if' - 否则是在没有条件的情况下的全部内容
  3. 我强烈建议使用正确的缩进和一致的大括号使用 - 不这样做不一定是错误,但它会更容易发现错误。

答案 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) //注意:最后没有分号