所以我是堆栈的新手,我必须编写一个解决后缀表达式的程序。我觉得我的物流有些正确,但我收到一条警告,说我有一个原始类型,我的引用应该被参数化。我不知道这意味着什么,也不知道如何解决。有任何想法吗?
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;
}
最佳答案
原始类型意味着堆栈(在本例中)将保存的数据类型是未指定的。
Java 被认为是类型安全的,因此其功能之一是确保接受和存储正确的类型。如果不指定类型,程序更容易出现运行时错误。
要删除警告,只需使用 Stack<Character> stack = new Stack<Character>();
创建堆栈即可
(请注意,使用了包装类 Character
,而不是基本类型 char
。原因是通用数据结构只能保存对象,而基本类型则不能。)
关于java - 原始类型,泛型,应该被参数化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28822286/