4 回答
TA贡献1963条经验 获得超6个赞
Java 类Double
包含一个静态方法,可以执行您要查找的操作。
Double.toString(doubleValue)
您可以通过几种不同的方式解决您的问题,具体取决于您希望GuitarFubar
类具有的功能:
public class GuitarMClass {
public static void main(String[] args) {
// OPTION 1
GuitarFubar output2 = new GuitarFubar();
output2.setGuitarLength(12.2);
String mkShft2 = output2.getGuitarLengthAsString();
System.out.println(mkShft2);
// OPTION 2
GuitarFubar bString = new GuitarFubar();
bString.setGuitarLength(12.2); //your example code never sets the value of guitarLength, which is why one of your outputs is '0.0'
System.out.println(Double.toString(bString.getGuitarLength()));
// OPTION 3
GuitarFubar guitarFubar = new GuitarFubar(12.2); // actually use the guitar length when constructing a new instance
System.out.println(Double.toString(guitarFubar.getGuitarLength()));
}
public class GuitarFubar {
private double guitarLength;
// make sure you have a no-args constructor if that's how you are going to instantiate your class
public GuitarFubar(){
}
public GuitarFubar(double guitarLength){
this.guitarLength = guitarLength;
}
// make sure you have a proper 'getter'
public double getGuitarLength(){
return this.guitarLength;
}
// make sure you have a proper 'setter'
public void setGuitarLength(double guitarLength){
this.guitarLength = guitarLength;
}
// alternative to sillyString method if you want this functionality within your GuitarFubar class
// (although not required since a caller of getGuitarLength() can handle String conversion)
public String getGuitarLengthAsString() {
return Double.toString(this.guitarLength);
}
}
}
TA贡献1798条经验 获得超3个赞
这是你困惑的根源:
public double getGuitarLen(double guitarLength){
return guitarLength;
}
那不是吸气剂。它也不是二传手。这是一个分流器,它只是准确地返回它所得到的值,而不将值存储在任何地方。
GuitarFubar output2 = new GuitarFubar();
这不会编译,因为你的构造函数需要一个参数。即使你给了它,getGuitarLen也不会归还,因为它仍然是一种分流。如果你更改getGuitarLen为
public double getGuitarLen(){
return this.guitarLength;
}
它仍然不起作用,因为你从未声明过
double guitarLength;
作为GuitarFubar国家的一部分。
进行这些更改,它应该会起作用。
并不是说你真的需要这样做,因为表达式:
"" + doubleToString;
将被转换成字符串。如果你在方法内部并不重要。doubleToString是否已声明并赋予值确实很重要。任何方法、构造函数或初始值设定项都可以实现此目的。
TA贡献1111条经验 获得超0个赞
尽量保持简单:
我们有一个只有一个字段的类
public class GuitarFubar {
private double length;
// next code snippets go here!
}
设置(初始)长度的两个选项:构造函数和方法(setter):
public GuitarFubar(double length) {
this.length = length;
}
public void setLength(double length) {
this.length = length;
}
以及一种获取长度的方法:
public double getLength() {
return this.length;
}
最后是获取字符串长度的方法:
public String getLengthAsString() {
return Double.toString(this.length);
}
但问题没有解决 - 需要设置长度,默认值为零。在调用(主)方法时
GuitarFubar guitar = new GuitarFubar(12.2);
System.out.println(guitar.getLengthAsString());
或者,如果没有实现构造函数,则使用 setter:
GuitarFubar guitar = new GuitarFubar();
guitar.setLength(12.2);
System.out.println(guitar.getLengthAsString());
如果我们希望长度不可变,我们将其声明为final(不得更改),在构造函数中设置它并且不实现设置器:
public class GuitarFubar {
private final double length;
public GuitarFubar(double length) {
this.length = length;
}
public double getLength() {
return this.length;
}
public String getLengthAsString() {
return Double.toString(this.length);
}
}
必须像这样创建new GuitarFubar(12.2);
TA贡献1829条经验 获得超13个赞
改变你的方法
public String sillyString(){
String str0 = "" + guitarLength;
return str0;
}
到:
public String sillyString(double doubleToString){
return "" + doubleToString;
}
并从 main 中调用它,例如:
System.out.println(bString.sillyString(213.3d));
添加回答
举报