问题描述
很抱歉,标题太含糊了,但是我不完全确定该怎么写。每次将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;
}
}
解决方法
让我们调试一下您的代码:我们逐步进行检查,弄清楚应该发生什么。通过运行代码仔细检查您的工作。使用调试器见证计算机的运行情况。如果您不愿意学习如何使用它,那么,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;
}
}