亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java,在方法內部,無法將雙精度數轉換為字符串

Java,在方法內部,無法將雙精度數轉換為字符串

白豬掌柜的 2023-07-28 16:02:37
我對 Java 很陌生,所以如果這是一個簡單的錯誤,我深表歉意。我有一個 java 類,它被賦予一個 double 值,并且必須使用一個方法將其作為字符串返回。我得到不同的結果。我嘗試在 get 方法中合并一個字符串轉換器。我嘗試使用另一種方法,專門用于轉換處理。我試過了Double.parsedouble(),,valueOf()。toString()一般來說,這些在主類中工作,但我的作業指定它必須在方法中。//其他幾個方法,默認構造函數省略。public class GuitarFubar {    private double guitarLength;    }    public GuitarFubar(double guitarLength){        this.guitarLength = guitarLength;    }    public double getGuitarLen(double guitarLength){        return guitarLength;    }    // also tried its own method.. it will only return 0.0..    public String sillyString(){        String str0 = "" + guitarLength;        return str0;    }}--------主類-----public class GuitarMClass {    public static void main(String[] args) {        GuitarFubar output2 = new GuitarFubar();        String mkShft2 = ("" + output2.getGuitarLen(12.2));         GuitarFubar bString = new GuitarFubar();        System.out.println(bString.sillyString());   }}實際結果“錯誤:無法將雙精度數轉換為字符串”或打印結果為 0.0(本應為 12.2))
查看完整描述

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);

? ? ? ? }


? ? }


}


查看完整回答
反對 回復 2023-07-28
?
呼如林

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是否已聲明并賦予值確實很重要。任何方法、構造函數或初始值設定項都可以實現此目的。


查看完整回答
反對 回復 2023-07-28
?
catspeake

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);


查看完整回答
反對 回復 2023-07-28
?
烙印99

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));


查看完整回答
反對 回復 2023-07-28
  • 4 回答
  • 0 關注
  • 189 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號