Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA使用计时器重复创建的对象。有没有办法在每次计时器执行时减少其中一个变量_Java_Timertask - Fatal编程技术网

JAVA使用计时器重复创建的对象。有没有办法在每次计时器执行时减少其中一个变量

JAVA使用计时器重复创建的对象。有没有办法在每次计时器执行时减少其中一个变量,java,timertask,Java,Timertask,我正在创建一个在计时器上创建的电池对象。我正在把它的输出输入数据库 它基本上只是一个监控电池设备的前端模拟器。并在变量低于某个值时发出错误 到目前为止,我每10秒创建一个对象,如下所示 public class Battery { public String name; public int input; public int output; public static int charge; Random random = new Random(); public Battery(Stri

我正在创建一个在计时器上创建的电池对象。我正在把它的输出输入数据库

它基本上只是一个监控电池设备的前端模拟器。并在变量低于某个值时发出错误

到目前为止,我每10秒创建一个对象,如下所示

public class Battery {
public String name;
public int input;
public int output;
public static int charge;

Random random = new Random();

public Battery(String dName) {
    this.name = dName;
    this.input = random.nextInt((415 - 400) + 1) + 400;
    this.output = input + random.nextInt((3 - 0) + 1);           
}



   @Override
    public String toString() {
        return "Battery [name=" + name + ", input=" + input + ", output=" + output + ", charge=" + charge + "]";
    }

public static void main(String[] args) {

    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        @Override
        public void run() {

            Battery battery = new Battery("Battery 1");
           
            System.out.println(battery.toString());
        }
    } , 0, 1000);// end of timer
}
我有一个代表电池电量的可变电量。我试着用一个while循环来减少这个值

battery.setCharge(100);
                int charge = battery.getCharge();
                System.out.println(charge);
                while (charge>0) {
                    System.out.println(charge);//for testing
                    battery.setCharge(charge);
                    charge--;
                }
但由于计时器的性质,每次创建的对象都是相同的。所以在这种情况下,它只是从100倒计时,然后输出电荷为1

有没有办法在每次调用计时器时降低此值?我尝试过使用一个静态整数,但没有任何帮助

我还尝试将while循环放在public void run()方法之外,并因此得到了无数错误

仍然处于Java的学习阶段,这可能需要沿着线程路线进行。但我还没有完全做到

此外,我还特意没有添加计时器结束的方法,它只是我在eclipse中打开和关闭的东西,以观察数字出现在我的前端

如果不允许添加第二个问题,请道歉,但是否有办法

 this.input = random.nextInt((415 - 400) + 1) + 400;

每隔一段时间返回一个0?

修复代码格式可能会帮助我们。@Basil Bourque关于修复什么有什么建议吗?我通常只是让它通过第二个代码示例的缩进,使用ctrl+IStart自动格式化。