将int存储到char数组中

时间:2015-10-24 09:32:35

标签: java arrays stack

我将这些设置在方法的顶部。

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()数组?

2 个答案:

答案 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)是您的朋友

注意:如果两个整数之和高于可用的最大字符值,则可能会遇到失败。