簡體   English   中英

將 Double.parseDouble 用於已被轉換為 String 的對象時出錯

[英]Error while using Double.parseDouble to an Object that has been caste as String

我正在編寫一個中綴求值程序,但我在使用此語句時遇到了問題:

c = Double.parseDouble((String) operands.pop());

“操作數”是一個存儲操作數的堆棧。 .pop() 方法返回一個 T 類型的對象(因為堆棧是一個 T 類型的 ArrayList)。 由於 Double.parseDouble 需要一個字符串作為參數,因此我將其轉換為字符串。

但是,我收到此錯誤: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String

我犯了什么錯誤?

異常實際上發生在表達式上

(String) operands.pop()

您不能使用(String)將 double 轉換為字符串,因為它不是安全轉換。

編譯器告訴你, operands.pop()給出的值已經是雙operands.pop()值了!

如果要進行強制轉換,則需要先對其使用toString()方法。

異常表明 pop 方法正在返回 java.lang.Double() 的對象,因此無需強制轉換和解析它。 即使您由於某種原因想要進行轉換和解析,也可以使用 String.valueOf(operands.pop())。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM