如何在另一个方法内调用带参数的方法?

时间:2014-02-19 21:56:49

标签: java class oop methods

如何在另一个方法中调用带参数的方法?

例如,我尝试在likes()方法中调用goFishingIn()方法,但它没有编译。这是我的代码:

import java.util.*;

public class Fisher   
{
  public void keep(Fish fish) 
  {
    if(this.numFishCaught < LIMIT)
    {
      fishesCaught.add(fish);
      numFishCaught++;
    }
  }

  public boolean likes(Fish fish)
  {
    if(fish.size >= this.keepSize && fish.species != "Sunfish")
    {
      return true;
    }
    else 
    {
      return false;
    }
  }

  public void goFishingIn(Pond pond)
  {
    pond.catchAFish();
    this.likes(Fish fish);
  }
}

4 个答案:

答案 0 :(得分:1)

如果某个地方已经有fish,你可以这样称呼它

this.likes(fish);

如果你不这样做,也许你必须做一个

Fish fish = new Fish();
this.likes(fish);

或传递一个,或做任何事情来获得范围

public void goFishingIn(Pond pond, Fish fish)
{
  pond.catchAFish();
  this.likes(fish);
}

答案 1 :(得分:1)

从它看起来,您应该能够像这样更改goFishingIn()方法:

public void goFishingIn(Pond pond)
{
  Fish fish = pond.catchAFish();
  this.likes(fish);
}

基本上,您只需要将fish的实例传递给likes()方法,因此您需要在调用fish方法之前实例化likes()。< / p>

或者,如果之后不需要对catchAFish()执行任何操作,您甚至可以缩短它并从参数内部调用fish方法。

public void goFishingIn(Pond pond)
{
  this.likes(pond.catchAFish());
}

第一种方法更可取,因为它允许您以后对fish对象进行任何引用。

答案 2 :(得分:0)

如果要声明方法,则使用类来声明参数,例如

public void goFishingIn(Pond pond)

但是当你调用一个方法时,你只传递一个变量,没有类标识符。

this.likes(Fish fish);

应该是

this.likes(fish);

fish变量未在goFishingIn()方法体内的任何位置定义,因此您将收到一个未定义的错误。您需要在某处获取fish值,或者定义它。

在我看来,在这种情况下最合理的做法是pond.catchAFish()返回类型Fish,然后将返回值存储在fish变量中。

Fish fish = pond.catchAFish();

然后你就可以使用它了。

答案 3 :(得分:0)

你应该改变

   this.likes(Fish fish);

this.likes(fish);

将参数传递给方法时,不要指定类型。 您只能在方法签名本身中指定类型。当你打电话给这个方法时Nog。