首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何更改实例变量的值

如何更改实例变量的值
EN

Stack Overflow用户
提问于 2019-05-25 18:42:19
回答 2查看 443关注 0票数 0

我正在做代码学院项目,构建一个droid。我可以完成步骤12和步骤13的一部分,但是过去的第三部分要求创建另一个实例( Droid dan = new Droid("Dan");),并创建一个在它们之间交换batteryLevel的energyTransfer方法。看看我在下面所做的尝试,我甚至不知道我是否在正确的道路上。任何帮助都将不胜感激!

谢谢!:)

代码语言:javascript
复制
this.batteryLevel = newBatteryLevel;
newBatteryLevel = batteryLevel;"

'public class Droid{

String name;
int batteryLevel;

public Droid(String droidName){
name = droidName;
batteryLevel = 100;

}

public String toString(){
return "Hello I am droid " + name;
}

 public void performTask(String task){
System.out.println(name + " is performing task: " + task);
batteryLevel = batteryLevel - 10;

 }

 public void energyReport(){
 System.out.println(name + "'s Battery level is:" + batteryLevel);
}


public void energyTransfer(int newBatteryLevel) {
   if (codey.batteryLevel > 10 ){
  codey.batteryLevel = batteryLevel - 5;
}
else if (codey.batteryLevel < 10 && codey.batteryLevel > 1 ){
  System.out.println("Transfer of energy not allowed at current power 
level");
}
else {
  System.out.println("Droid battery is depleted");
}


}


public static void main(String[] args){
Droid codey = new Droid("Codey");
Droid dan = new Droid("Dan");
System.out.println(codey);
codey.performTask("Walking");
codey.energyReport();
codey.performTask("Coding");
codey.energyReport();
codey.performTask("Cleaning");
codey.energyReport();
codey.performTask("Buying a house");
codey.energyReport();
dan.energyReport();

  }

 }'

我有两个实例codey和dan。如果Codey还有60%的电量。我希望能够从丹电池剩余中减去20%,并将其添加到codey电池剩余(energyTransfer)中。

EN

回答 2

Stack Overflow用户

发布于 2019-05-25 19:00:54

我不确定我是否理解得很好。但energyTransfer方法可能如下所示:

代码语言:javascript
复制
public void energyTransfer(Droid aux){
    if(this.batteryLevel == 60 && aux.batteryLevel >= 20){
       this.batteryLevel += 20;
       aux.batteryLevel -= 20;
    }
 }

和你的主要内容:

代码语言:javascript
复制
Droid codey = new Droid("Codey");
Droid dan = new Droid("Dan");
/* ... */
codey.energyTransfer(dan);
票数 0
EN

Stack Overflow用户

发布于 2019-05-25 19:08:26

如果我在你的位置上,我会创建一个单独的能量转移类,它将负责在两个实例之间交换能量,因为这不是你的Droid类(根据SRP)的责任。

因此,最好从Droid类中取出能量转移代码,并将其放入如下所示的新类中

代码语言:javascript
复制
class EnergyTransfer {


    public void energyTransfer(Droid from, Droid to) {
         //Add your code transfer logic here

    }
}

创建一个单独的main类,它将包含main方法,如下所示

代码语言:javascript
复制
class Main {

    public static void main(String[] args) {
        Droid codey = new Droid("Codey");
        Droid dan = new Droid("Dan");
        System.out.println(codey);
        codey.performTask("Walking");
        codey.energyReport();
        codey.performTask("Coding");
        codey.energyReport();
        codey.performTask("Cleaning");
        codey.energyReport();
        codey.performTask("Buying a house");
        codey.energyReport();
        dan.energyReport();

        EnergyTransfer transfer = new EnergyTransfer();
        transfer.energyTransfer(codey, dan);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56304070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档