如何在另一个方法中调用带参数的方法?
例如,我尝试在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);
}
}
答案 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。