0

我已经写了我的接口代码,但是错误。如何比较两个家具对象的两个价格?我在 if 语句中做对了吗?return声明说找不到符号。我怎样才能解决这个问题?

public boolean IsCheaper(Furniture f)
{
    if (f instanceof Furniture)
    {
         boolean status;
         if (price > f.getPrice())
             status = true;
         else if (price < f.getPrice())
             status = false;

    }
    return status;
}
4

2 回答 2

1
   public boolean IsCheaper(Furniture f)
    {
      boolean status= false; // or  true
      if (f instanceof Furniture) // if(f!=null) as suggested by a comment
       {

        if (price > f.getPrice())
            status = true;
        else if (price < f.getPrice())
            status = false;

       }
       return status;
     }

status 应该在 if 块之外声明,因为您需要它在外面。

是否真的需要 if 检查,仅当方法接受家具的父类时才需要检查 instanceof

于 2012-12-07T04:15:33.780 回答
0

变量的范围boolean status;只是 if 块if (f instanceof Furniture)

并且您在 if 块之外有一个 return 语句,因此一旦 if 块完成,变量status就会因为超出范围而变得不可用。

因此编译器无法找到它,因此说“找不到符号:状态”

if (f instanceof Furniture)所以在块外声明你的状态变量。

于 2012-12-07T04:19:49.517 回答