【问题标题】:How to call a method with parameters inside another method?如何在另一个方法中调用带有参数的方法?
【发布时间】:2014-02-19 21:56:48
【问题描述】:

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

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

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);
  }
}

【问题讨论】:

  • 如何调用goFishinIn 方法?你如何使用System.out.println(..)
  • 您需要一个 Fish fish 实例作为参数传递。大概pond.catchAFish会返回一个Fish,那么你可以把这个对象引用作为参数传递。
  • 先制作一个 Fish 的对象,然后在 goFishingIn(Pond Pond) 中传递它
  • 你有问题 fish.species != "Sunfish" 应该改为 ! fish.species.equals("Sunfish") 查看更多:stackoverflow.com/questions/513832/…

标签: java class oop methods


【解决方案1】:

从外观上看,您应该可以像这样更改您的 goFishingIn() 方法:

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

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

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

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

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

【讨论】:

  • 很高兴听到这个消息。如果您对答案感到满意,请继续并喜欢/接受它,以便我们知道您已经解决了您的问题。
【解决方案2】:

如果您已经在某处拥有fish,您会这样称呼它

this.likes(fish);

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

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

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

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

【讨论】:

    【解决方案3】:

    如果你声明一个方法,你用类声明参数,例如

    public void goFishingIn(Pond pond)
    

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

    this.likes(Fish fish);
    

    应该是

    this.likes(fish);
    

    但是fish 变量没有在goFishingIn() 方法体内的任何地方定义,因此你会得到一个未定义的错误。您需要在某处获取fish 值,或者定义它。

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

    Fish fish = pond.catchAFish();
    

    然后你就可以使用它了。

    【讨论】:

      【解决方案4】:

      你应该改变

         this.likes(Fish fish);
      

      进入

      this.likes(fish);
      

      当您将参数传递给方法时,您无需指定类型。 您只需在方法签名本身中指定类型。当你调用这个方法时不会。

      【讨论】:

        猜你喜欢
        • 2023-03-24
        • 1970-01-01
        • 2015-02-07
        • 1970-01-01
        • 1970-01-01
        • 2018-09-03
        • 2011-06-01
        • 2020-10-22
        • 1970-01-01
        相关资源
        最近更新 更多