所以我是堆栈的新手,我必须编写一个解决后缀表达式的程序。我觉得我的物流有点正确,但是我收到一条警告说我有一个原始类型,我的参考应该参数化。我不知道这意味着什么也不知道如何解决它。有任何想法吗?
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 :(得分:1)
原始类型意味着未指定堆栈(在此实例中)将保留的数据类型。
Java被认为是类型安全的,因此它的一个功能是确保接受和存储正确的类型。如果不指定类型,程序更容易出现运行时错误。
要删除警告,只需使用Stack<Character> stack = new Stack<Character>();
(请注意,使用了包装类Character
,而不是原始char
。原因是通用数据结构只能保存原始类型不对的对象。)