簡體   English   中英

Java Stack類強制轉換異常

[英]Java Stack Class Cast Exception

我必須編寫一個程序,從鍵盤讀取后綴表達式並將其存儲在堆棧中。 在“+”的情況下我一直得到一個類強制轉換異常:我無法理解它。 有人能幫助我嗎?

    String option = (String)stack.pop();
    while( stack  != null )
    {
        switch( option )
        {
        case "+":

            int left = (Integer)stack.pop();
            int right = (Integer)stack.pop();
            int result = left + right;
            String temp = (String) stack.pop();
            stack.push(result);

            break;  

你正在從堆棧中彈出東西而不檢查它們是什么。 這幾乎肯定會給你帶來麻煩。 你是如何在第一時間建立堆棧的? 你知道你做過類似的事情嗎?

stack.push("string that becomes temp");
stack.push(new Integer(5));
stack.push(new Integer(3));
stack.push("+")

看起來您正在嘗試從堆棧中讀取一系列字符串輸入,並在需要使用轉換時使用轉換轉換數字輸入。

假設你的用戶已經造成了這樣的堆棧推送

stack.push("1234");
stack.push("1");
stack.push("+");

pop例程如下所示:

int left = Integer.parseint(stack.pop());
int right = Integer.parseint(stack.pop());
int result = left + right;

轉換是指對象IS所需的類型。 轉換適用於您希望它成為正確類型的時間。

我也會讓你的堆棧類型為String的通用,以避免產生疑問:

Stack<String> stack = new ....;

暫無
暫無

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

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