【问题标题】:whats is wrong in this basic method Java?这个基本方法Java有什么问题?
【发布时间】:2016-11-14 20:19:55
【问题描述】:

我是这种编程语言的新手(几乎也是),我只想使用带有 getter 和 setter 方法的“if and else”,我正在做一个基本的 RPG 用于学习目的。 我有一个角色 x,我想做的就是;如果该角色的生命低于0,则复活该角色,否则只需增加他的生命。这是我的 代码。

public Skill bless(Character x) {
   if (0>= x.getCurrentHp()) {
       x.getCurrentHp() == x.getHp() * 3/4;
   }
   else if (x.getCurrentHp() > 0) {
       x.getCurrentHp() =+ x.getHp() * 1/2;
   }
   return x;
}      

【问题讨论】:

  • 该方法给您的行为有什么问题?你没有告诉我们这个最重要的信息。
  • 在 if 语句的第一个分支中,您使用的是 ==,我猜应该使用 =
  • 我确定整数除法不是您的想法。当您使用整数除法时,3/4 == 0,而不是 0.75。我敢打赌你会对这个结果感到惊讶。
  • @JanSchaefer 你绝对错了。它不会改变任何东西。阅读我的回答为什么。
  • 仅作记录:更新传入参数是不好的做法;并返回它。不要混合东西。操纵您的参数(参见“inout”;或返回“更新”值)。

标签: java if-statement get set


【解决方案1】:

嗯,问题出在以下几行:

x.getCurrentHp() == x.getHp() * 3/4;
x.getCurrentHp() =+ x.getHp() * 1/2;

您必须使用以下方法:

x.setCurrentHp(x.getHp() * 3/4);
x.setCurrentHp(x.getHp() * 1/2);

底层方法 setCurrentHp / getCurrentHp 应该如下所示:

public class Character {
    private int currentHp;
    // ... other methods and fields

    public void setCurrentHp(int hp){ currentHp = hp; }

    public int getCurrentHp(){ return hp; }
}

因为当您调用 x.getCurrentHp() 时,它只会返回值。然后您只需将 x.getHp() * 1/2 分配给该值。

作为教程,可以参考official examplesgetter/setter方法。

【讨论】:

    【解决方案2】:

    代替

    x.getCurrentHp() == x.getHp() * 3/4
    

    使用

    x.setCurrentHp(x.getHp() * 3/4)
    

    请注意,我将其更改为 Set 方法。假设已经创建了这个方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 2012-08-16
      相关资源
      最近更新 更多