我将这些设置在方法的顶部。
viewDidLoad
我已经这样做了:
public static String eval(char[] postfix) {
StackInterface<Character> stack = new LinkedStack<>();
char[] answer = new char[postfix.length];
int numOne = 0;
int numTwo = 0;
int result = 0;
int i;
for (i=0; i < postfix.length; i++)
.....
如何设置它以便我可以将两个 if (!stack.empty()) {
numOne = stack.top();
stack.pop();
numTwo = stack.peek();
stack.pop();
//My problem is here. I can't push the result to my char[] array.
if (postfix[i] == '+') {
result = numOne + numTwo;
stack.push(result);
..........
d变量的结果推送到我的pop()
数组?
答案 0 :(得分:1)
你也需要将它们读作Character(或char),而不是int; 堆栈正在使用Character,没有理由将值读入整数。 像:
char numOne = 0;
char numTwo = 0;
char result = 0;
...
result = numOne + numTwo;
stack.push(result);
请注意,总和结果的char范围可能存在其他问题。
答案 1 :(得分:0)
您应该将结果转换为char,因为如果使用方法stack.push(int)
,则不会自动转换int。而是这样做:
stack.push((char)result);
结果将被转换为char。为char分配一个int值是有效的,因为在分配它时,Java会自动强制转换它。但是如果你使用int作为方法的参数而不是char,那么Java就不会这样做。对于糟糕的英语,但更容易:
的工作:强>
char c = 364; //the int value is automatically converted
无效
public void doSomething(char c) {..}
doSomething(534); //here the int will NOT be automatically casted to an int
有效方式的第二个例子
doSomething( (char) 534);
简而言之,你应该推送一个铸造的int。 (char)
是您的朋友
注意:如果两个整数之和高于可用的最大字符值,则可能会遇到失败。