由于出现错误,无法将双倍换成无效

问题描述

很抱歉,标题太含糊了,但是我不完全确定该怎么写。每次将double换为void时,都会收到一个错误,告诉我程序的退出值不正确。一切都在CodeLab上,所以一切都必须清晰准确。

我的任务是: 编写一个名为GasTank的类,其中包含: 一个实例变量,其名称为double类型的数量,初始化为0。 名为addGas的方法,该方法接受double类型的参数。量实例变量的值增加参数的值。 名为useGas的方法,该方法接受double类型的参数。数量的值将减少参数的值。但是,如果数量的值减小到0以下,则数量设置为0。 名为isEmpty的方法不接受任何参数。 isEmpty返回一个布尔值:如果value的值小于0.1,则返回true,否则返回false。 名为getGasLevel的方法,不接受任何参数。 getGasLevel返回金额实例变量的值。

public class GasTank {
    private double amount=0;

    public double addGas(double addg){
        amount=amount+addg;
        if(amount>0.1){
            amount=0;

        }

    }

    public void useGas(double useg){
        amount=amount-useg;
        if(amount<0){
            amount=0;
        }
    }

    public boolean isEmpty(){
        if(amount<0.1){
            return true;
        }
        return false;
    }

    public double getGasLevel(){
        return amount;
    }
}

Error

解决方法

让我们调试一下您的代码:我们逐步进行检查,弄清楚应该发生什么。通过运行代码仔细检查您的工作。使用调试器见证计算机的运行情况。如果您不愿意学习如何使用它,那么,println语句是一个糟糕的替代,对于初学者来说足够好用了:

public double addGas(double addg){
        amount=amount+addg;
        if(amount>0.1){
            amount=0;

        }

    }

因此,我们采用“数量”字段,并根据指定的字段添加气体。

,然后,如果金额大于0.1,我们将其重新设置为0

因此,如图所示,检查器代码增加了78加仑,并且大于0.1,您的代码会将amount设置为78.0,然后立即将其设置为0.0。我不知道为什么要添加该行,但是计算机只是按照计算机的指示进行操作。您让它执行的操作使分配失败。此后该字段应为78.0。

我绝对不知道您打算做什么:

随着错误的发生,无法将双倍换成空缺

但是,整个“如果您尝试添加超过一加仑的十分之一,我会将数量重置为0”是代码的唯一问题。

,

我为您修复了它。查看评论中的注释

public class GasTank {
   private double amount=0;
   private double v;
   
   //Constructor
   public GasTank(double a){
      v = a;
   }
      
    //Changed to void,we aren't returning a double val  
   public void addGas(double addg){
       amount=amount+addg;
      
       //changed your if statement
      if(amount>v){
         amount = v;
      }
   }

   public void useGas(double useg){
      amount=amount-useg;
      if(amount<0){
         amount=0;
      }
   }

   public boolean isEmpty(){
      if(amount<0.1){
         return true;
      }
        //added else statement here
      else{
         return false;
      }
   }

   public double getGasLevel(){
      return amount;
   }
}