gpt4 book ai didi

java - 增变器方法不起作用,NetBeans

转载 作者:行者123 更新时间:2023-11-29 05:21:06 24 4
gpt4 key购买 nike

我尝试更改 coupe 的值,但输出没有改变。在 NetBeans 中,我将这两个程序保存在同一个项目和包下。我没有在这里包含它,因为它可能使代码太长,但我也编写了可以正常工作的访问器方法,所以我很困惑为什么 mutator 方法不起作用。

类代码:

package auto;

public class Auto
{
private String model;
private int milesDriven;
private double gallonsOfGas;

public Auto(String startModel,
int startMilesDriven,
double startGallonsOfGas)
{
model = startModel;
setMilesDriven(startMilesDriven);
setGallonsOfGas(startGallonsOfGas);
}

public void setModel(String newModel)
{
model = newModel;
}

public void setMilesDriven(int newMilesDriven)
{
if (newMilesDriven >= 0)
milesDriven = newMilesDriven;
else
{
System.err.println("Miles driven cannot be negative.");
System.err.println("Value not changed.");
}
}

public void setGallonsOfGas(double newGallonsOfGas)
{
if (newGallonsOfGas >= 0.0)
gallonsOfGas = newGallonsOfGas;
else
{
System.err.println("Gallons of gas cannot be negative.");
System.err.println("Value not changed.");
}
}
}

客户端类代码:

package auto;

import java.text.DecimalFormat;

public class AutoClient
{
public static void main(String [] args)
{
DecimalFormat milesPattern = new DecimalFormat("#,###");

Auto coupe = new Auto("Corvette", 300000, 0.0);

String coupeModel = coupe.getModel();
int coupeMiles = coupe.getMilesDriven();
double coupeGallons = coupe.getGallonsOfGas();

System.out.println("coupe:"
+ "\nmodel: " + coupeModel
+ "\nmiles: " + milesPattern.format(coupeMiles)
+ "\ngallons: " + coupeGallons);

coupe.setModel("Viper");
coupe.setMilesDriven(10000);
coupe.setGallonsOfGas(50.0);

System.out.println("coupe:"
+ "\nmodel: " + coupeModel
+ "\nmiles: " + milesPattern.format(coupeMiles)
+ "\ngallons: " + coupeGallons);
}
}

最佳答案

给定您当前的代码,在您更改值之后

coupe.setModel("Viper");
coupe.setMilesDriven(10000);
coupe.setGallonsOfGas(50.0);

你需要重新获得它们

coupeModel = coupe.getModel();
coupeMiles = coupe.getMilesDriven();
coupeGallons = coupe.getGallonsOfGas();

在你可以打电话之前

System.out.println("coupe:"
+ "\nmodel: " + coupeModel
+ "\nmiles: " + milesPattern.format(coupeMiles)
+ "\ngallons: " + coupeGallons);

我建议你更新 Auto 并添加一个 toString()

@Override
public String toString() {
return "coupe:"
+ "\nmodel: " + coupeModel
+ "\nmiles: " + milesPattern.format(coupeMiles)
+ "\ngallons: " + coupeGallons;
}

然后你可以替换(在两个地方)

System.out.println("coupe:"
+ "\nmodel: " + coupeModel
+ "\nmiles: " + milesPattern.format(coupeMiles)
+ "\ngallons: " + coupeGallons);

System.out.println(coupe); // <-- Java will call toString() for you

关于java - 增变器方法不起作用,NetBeans,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24708752/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com