2015-10-24 3 views
0

У меня эти настройки расположены в верхней части метода.Хранение int в массиве char

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); 
     .......... 

Как настроить его так, что я могу нажать на результат двух pop() «d переменных в моей char[] массив?

ответ

1

Вам также необходимо прочитать их как символ (или символ), а не int; Стек работает с символом, нет никаких оснований считать значения целыми. как:

char numOne = 0; 
char numTwo = 0; 
char result = 0; 
... 
result = numOne + numTwo; 
stack.push(result); 

Обратите внимание, там могут быть дополнительные проблемы с диапазоном полукокса результата суммы.

0

Вы должны передать результат символу, потому что, если вы используете метод stack.push(int), int не будет преобразован автоматически. Вместо этого сделайте следующее: stack.push ((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); 

В меньших словах вы должны нажать casted int. (char) - ваш друг

Примечание: вы можете столкнуться с отказами, если сумма между двумя значениями int превышает максимально допустимое значение char.

Смежные вопросы