2016-02-13 5 views
0

Я пытаюсь решить постфиксное выражение, используя стек на основе символов.
Мне нужно подтолкнуть некоторые отрицательные значения к моему основанию на основе символов, например '-2', но в нем хранится только часть '-'.
Мой точный код выглядит this-
Как преобразовать отрицательное целочисленное значение в char datatype

   char val=Character.forDigit(operation(temp),10); 
      System.out.println("pushed is "+val); 


выход является "pushed is - "
Просьба помочь.

+1

-2 - это два символа, поэтому вы видите только первый персонаж, нажатый. – pczeus

+0

Если вы обрабатываете свой стек как числа, попробуйте 'short' - [также 16 бит, как char, но подписанный.] (Https://docs.oracle.com/javase/tutorial/java/nutsandbolts/datatypes.html). – Kenney

ответ

1

Характерный класс является особым. Как у одного персонажа, одна цифра, поэтому он получает только первое из «-2».

Смотреть это для более полного объяснения: Difference between "char" and "String" in Java

1

char означает, что он состоит из символа из поддерживаемых символов в любом конкретном языке. -2 не 1 символ, его string, поскольку он состоит из последовательности символов, например, '-' и '1'. Так что ваш код делает правильно.

Теперь, учитывая, что вам действительно нужны символы для хранения ваших цифр, вы должны сопоставить свое отрицательное значение с некоторыми другими символами. Цифры от 0..9 на самом деле ascci #48..57. Итак, что вы можете сделать, это pic 10 последовательных символов из таблицы ascci и рассматривать их как -ve. Допустим, вы выбрали .. i, как ваши числа -ve, тогда a = -1, b = -2 и т. Д.

Имейте в виду, что, поскольку вы используете персонажа, вы не можете иметь дело с двумя если вы рассматриваете каждый номер как индивидуальный символ. Затем вы должны обрабатывать все «десятичные» операции.

+0

Спасибо большое. Это кажется довольно логичным, но если я использую 'a' say для '-1', тогда как я могу использовать его для выполнения операций postfix. Нужно ли создавать отдельное сопоставление с использованием случаев переключения для всех возможных случаев. Если да, то как я буду различать положительное число и отрицательное число. –

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