我正在嘗試使用 parseDouble() 將字符串值解析為雙精度類型。Parse double 接受我使用 getText() 傳遞給它的字符串。但這不起作用。然后我用雙引號將它連接起來?,F在正在工作。但我在這里有一個困惑。為什么它在沒有連接的情況下無法工作,盡管它接受一個字符串,并且 getText() 當然是獲取一個字符串。編寫該語句后,編譯器添加了“s:”。我也想知道這在這里意味著什么。我使用的是Android Studio 3.5.0.0我努力了:val1=Double.parseDouble(ioTxt.getText());但這行不通。正確的說法是:val1 = Double.parseDouble(s: ioTxt.getText()+"");ioTxt 是一個文本視圖。Val1 是 double 類型的變量。s: 是編譯器添加的東西,它不是上面寫的語法和語句的一部分如果寫 toString() 而不是串聯,上面的語句也能很好地工作。這是:val1 = Double.parseDouble(ioTxt.getText().toString());但我再次不明白為什么它需要 toString() 才能正常工作。我希望在不將其與引號或 toString() 連接的情況下進行工作。
3 回答

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

互換的青春
TA貢獻1797條經驗 獲得超6個贊
該android.widget.TextView.getText()
方法被聲明為返回 aCharSequence
而不是 a String
。(參見javadoc。)
該CharSequence
接口是 的聲明接口之一String
。(參見javadoc。)
這Double.parseDouble
需要一個String
論點。(參見javadoc。)
因此,這里存在類型不匹配:
val1 = Double.parseDouble(ioTxt.getText()); // expects String // provided CharSequence
但這有效:
val1 = Double.parseDouble(ioTxt.getText().toString());
因為toString()
正在將 轉換CharSequence
為 a String
。這是進行轉換的另一種方式:
val1 = Double.parseDouble(ioTxt.getText() + "");
但請注意,這不是有效的 Java 代碼:
val1 = Double.parseDouble(s: ioTxt.getText()+"");
您很可能誤解了您的 IDE 所說的內容。
查看完整回答
慕課專欄
更多
添加回答
舉報
0/150
提交
取消