1

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

3 回答 3

6

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++ 入门书籍。以下是针对所有级别的一些建议。

于 2013-02-21T05:55:01.420 回答
3

我在这里看到几个问题:

  1. 你的 else 语句中有分号 - 这些不应该在那里
  2. 一个 if 有多个 else 子句。在评估另一个条件时使用“else if” - else 是不满足条件时的全部
  3. 我强烈推荐正确的缩进和一致的大括号使用——不这样做不一定是错误,但它会让你更容易注意到错误。
于 2013-02-21T05:57:53.407 回答
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 语句设置条件

编辑
aselse if需要条件的地方似乎你想这样做
else if(your condition statements) // 注意:末尾没有分号

于 2013-02-21T05:54:43.540 回答