2015-03-03 97 views
2

所以我是新來堆棧,我必須編寫一個解決後綴表達式的程序。我覺得我的後勤有點正確,但我得到一個警告,說我有一個原始類型,我的參考應該參數化。我不知道這意味着什麼,也不知道如何解決它。有任何想法嗎?原始類型,泛型應該參數化

import java.util.Stack; 

    public class Expression<T> { 

    int result, num1, num2; 
    Stack stack; 
    char c; 


    public <T> int evaluate(String expression) 
    { 
    stack = new Stack(); 

    for (int i = 0; i < expression.length(); ++i) 
     c = expression.charAt(i); 

    if (c > '0' && c < '9') 
     stack.push(c); 
    else 
     num1 = Integer.parseInt("" + stack.pop()); 
     num2 = Integer.parseInt("" + stack.pop()); 

    switch (c) 
    { 
    case '+': 
     stack.push(num1 + num2); 
     break; 
    case '-': 
     stack.push(num1 - num2); 
     break; 
    case '*': 
     stack.push(num1 * num2); 
     break; 
    case '/': 
     stack.push(num1/num2); 
     break; 
    } 

    result = Integer.parseInt("" + stack.pop()); 

    return result; 
} 

}

+0

對我來說聽起來像你需要參數化堆棧通過聲明它爲類型'堆棧' – childofsoong 2015-03-03 01:01:52

回答

1

原始類型意味着堆棧(在這種情況下)將持有的數據的類型是不確定的。

Java被認爲是類型安全的,所以它的一個特點是確保正確的類型被接受和存儲。沒有指定類型,程序更容易出現運行時錯誤。

要刪除的警告,只是創建使用Stack<Character> stack = new Stack<Character>();

你的籌碼(注意,包裝類Character使用,不是原始char。這樣做的原因是,通用數據結構只能容納對象,原始類型不是)