每当我尝试创建递归方法时,我都会收到相同的错误

时间:2019-05-05 19:41:02

标签: java

从本质上讲,我创建了递归方法并认为自己完成了该方法,但是无论做什么我都会遇到相同的错误!谁能告诉我我所缺少的。错误是“ Taco类型的eatTaco(Taco)方法不适用于参数(int)”。

   //recursive method
    public static int eatTaco(Taco t) {
          if (t.getOunces() == 0) {
         System.out.println("Done");
    } 
        else {
    System.out.println("There are " + t.getOunces() + " of " + t.getType() + " taco remaining.");
        return eatTaco(t.getOunces() - 1);
    }

    }

3 个答案:

答案 0 :(得分:1)

此方法签名表示eatTacoTaco对象作为参数。

public static int eatTaco(Taco t)

但是当您调用它时,您传入一个整数值。

return eatTaco(t.getOunces() - 1);

您需要一种从炸玉米饼中减去盎司的方法,然后然后再次致电eatTaco。像这样:

System.out.println("There are " + t.getOunces()...
t.setOunces(t.getOunces() - 1);
return eatTaco(t);

答案 1 :(得分:1)

函数eatTaco(Taco t)需要一个类型为taco的参数。递归调用函数时,将调用eatTaco(t.getOunces() - 1)。如函数所期望的那样,这将返回int而不是Taco。

答案 2 :(得分:-1)

此行有错误-

return eatTaco(t.getOunces() - 1);

因为eatTaco接受Taco作为参数,而t.getOunces()-1返回一个整数。

也许将其更改为eatTaco(t.reduceOunces());

在Taco类中-

 void reduceOunces(){ this.ounces - 1;}