-3

我标记的 else 有一个错误,说它是不必要的。我怎样才能让 else 与第一个 if 一致?

if (heading < 270 && heading > 90)
        directionToFace= 'S'; 
        if (heading > 180)
        {
            degreeToWalk = (heading-180);
            directionToWalk = 'W';
        }
        else
        {
            degreeToWalk = (180-heading);
            directionToWalk = 'E';
        }
    else//this is where the error occurs
        directionToFace='N';
    {
        if (heading > 270)
        {
            degreeToWalk =(heading-270);
            directionToWalk='W';
        }
        else 
        {
            degreeToWalk = (heading);
            directionToWalk = 'E';
        }
    }
4

4 回答 4

1
if (heading < 270 && heading > 90){
        directionToFace= 'S'; 
        if (heading > 180)
        {
            degreeToWalk = (heading-180);
            directionToWalk = 'W';
        }
        else
        {
            degreeToWalk = (180-heading);
            directionToWalk = 'E';
        }
}
    else//this is where the error occurs
        directionToFace='N';
    {
        if (heading > 270)
        {
            degreeToWalk =(heading-270);
            directionToWalk='W';
        }
        else 
        {
            degreeToWalk = (heading);
            directionToWalk = 'E';
        }
    }

在 if... 后面加上括号

if(cond) 
  stmt1
  stmt2

只有 stmt1 依赖于 cond。

if(cond){
      stmt1
      stmt2
}

您需要在它们周围添加括号以使其依赖于 cond

于 2015-10-28T15:14:19.960 回答
0

如果这是 Java,那么您不能将多个单个语句放在一个 if 块中,它需要被包装在一个块中(使用 {})。在您的情况下,“if”仅处理第一行:

directionToFace= 'S'; 

在第一个 if 语句中,下一个语句是:

    if (heading > 180)
    {
        degreeToWalk = (heading-180);
        directionToWalk = 'W';
    }
    else
    {
        degreeToWalk = (180-heading);
        directionToWalk = 'E';
    }

因为java不关心空格和制表符,它看下一个要处理的语句,它是一个else。因为最后一条语句既不是 if(没有 else),也不是 else if。

因此,如果我们查看代码,您似乎没有将初始 if 包装在块语句中:

 if (heading < 270 && heading > 90)
 {
     // all your statements go here
 }
于 2015-10-28T15:21:33.467 回答
0

你有

...
} else
     directionFace = 'N';
{

在几乎任何{}用于块作用域的语言中,if/else 要么是

if (condition)
   single_line;

或者

if (condition) {
    multiple;
    lines;
}

由于{在 else 之后没有任何内容,因此directionFace赋值成为子句的唯一组成部分else,并且所有内容都是无条件执行的块。

于 2015-10-28T15:25:18.097 回答
0

{在第一行不见了

于 2015-10-28T15:14:35.343 回答