我有一个名为货币的课程
public class Monetary
{
double value;
String type;
public Monetary()
{
value = 0;
type = "";
}
public double getValue()
{
return value;
}
public void setValue(double x)
{
x = this.value;
}
我正在测试get和set方法,所以我做了一个测试类,如下所示
public class test
{
public static void main(String [] args)
{
double test = 5000;
Monetary testM = new Monetary();
testM.setValue(5000);
System.out.println(testM.getValue());
}
}
问题是java打印的结果不是5000.0,而是0.我不明白为什么会发生这种情况。这些方法不正确吗?
答案 0 :(得分:2)
问题出在setValue
方法:
public void setValue(double x) {
x = this.value;
}
您要为参数指定属性的当前值,它应该是向后的:
public void setValue(double x) {
this.value = x;
}
请注意,即使这样做,您也会获得5000.0000000...
之类的输出。要修复结果,您可以使用String#format
或System.out.printf
:
System.out.println(String.format("%.2f", testM.getValue()));
或
System.out.printf("%.2f\n", testM.getValue());
答案 1 :(得分:0)
在您的代码中,您将value
分配给参数x
,它应该是相反的。
public void setValue(double x){
this.value = x;
}
答案 2 :(得分:0)
试试这个:
public void setValue(double x)
{
this.value = x;
}
答案 3 :(得分:0)
public void setValue(double x){
this.value = x;
}
您正在使用默认值x
指定您传递的参数value
。你必须做到与此完全相反。使用传递的值value
为x
分配。
因此,this.value = 5000
发生了x = 0
,而不是{{1}}。
答案 4 :(得分:0)
你正在为参数(double x)分配int值的值,因为你是返回值所以什么都不做,所以你想要做的是
public class Monetary
{
double value;
String type;
public Monetary()
{
value = 0;
type = "";
}
public double getValue()
{
return value;
}
public void setValue(double x)
{
value = x;//change this
}