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));
添加回答
舉報