3 回答

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
但我再次不明白為什么它需要 toString() 才能正常工作。
Double.parseDouble()
接受類型為 的參數(shù)String
。
該getText()
方法顯然返回除 a 之外的其他內(nèi)容String
,因此您需要進(jìn)行轉(zhuǎn)換。
附加空字符串是強(qiáng)制String
轉(zhuǎn)換的一種巧妙方法(+
具有一個(gè)String
參數(shù)的運(yùn)算符隱式調(diào)用toString()
另一個(gè)參數(shù))。更喜歡顯式toString()
調(diào)用。
's:' 只是 所使用的參數(shù)名稱parseDouble()
,并由 IDE 作為提示顯示。它實(shí)際上并沒有修改您的源代碼。

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超6個(gè)贊
該android.widget.TextView.getText()
方法被聲明為返回 aCharSequence
而不是 a String
。(參見javadoc。)
該CharSequence
接口是 的聲明接口之一String
。(參見javadoc。)
這Double.parseDouble
需要一個(gè)String
論點(diǎn)。(參見javadoc。)
因此,這里存在類型不匹配:
val1 = Double.parseDouble(ioTxt.getText()); // expects String // provided CharSequence
但這有效:
val1 = Double.parseDouble(ioTxt.getText().toString());
因?yàn)?code>toString()正在將 轉(zhuǎn)換CharSequence
為 a String
。這是進(jìn)行轉(zhuǎn)換的另一種方式:
val1 = Double.parseDouble(ioTxt.getText() + "");
但請(qǐng)注意,這不是有效的 Java 代碼:
val1 = Double.parseDouble(s: ioTxt.getText()+"");
您很可能誤解了您的 IDE 所說的內(nèi)容。

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
parseDouble接受 String 作為參數(shù)。
當(dāng)您嘗試傳遞雙精度值而不是字符串時(shí),會(huì)出現(xiàn)錯(cuò)誤。
對(duì)于第二個(gè)問題,編譯器永遠(yuǎn)不會(huì)向源文件中添加任何內(nèi)容。您看到的“s:”是您正在使用的 IDE 的一種方式,用于顯示您在調(diào)用方法時(shí)設(shè)置的參數(shù)。
添加回答
舉報(bào)