2016-04-24 3 views
0

Я делаю калькулятор для школьных занятий, и все работает, кроме моего сканера, вызывается, когда оно принимает отрицательное целое число, оно не видит его как отрицательное число, оно просто видит знак вычитания как оператора, а я хотите, чтобы это было похоже на часть операнда:Infix to postfix читать отрицательные целые числа как отрицательные

String exp = "8+4*-12-4"; 
    String[] temp = new String[exp.length()]; 
    temp =exp.split("(?<=[-+*/])|(?=[-+*/])"); 

это делает его правильным, если его единственные положительные целые числа. например вход: 8 + 4 * 12-4 и выход: [8, 4, 12, *, +, 4, -]

, но с отрицательным числом он не получает это право! так вот что я хочу помочь, заранее спасибо

ответ

0

LinkedList <String>list= new LinkedList<String>(); просто принимает каждый из символов в строке и добавляет каждый полученный в результате список. Вместо этого вам нужно написать код, поддерживающий синтаксис. Если вы можете настаивать на пробеле между всеми токенами, вы можете разделить на пробелы with, for example, String.split. В противном случае простейшая альтернатива состоит в том, чтобы перебирать символы в строке «вручную» и создавать выход таким образом.

Хотя я полагаю, что также можно использовать String.split с непривлекательным положительным взглядом, а также разделять на операторов, вычисление регулярных выражений на этом уровне мастерства сложнее, чем решение проблемы в коде. Я не могу привести пример для реализации утверждения положительного взгляда, поскольку я не хочу тратить время на разработку разработки, писать код, создавать тестовые примеры и отлаживать их, поскольку я не думаю, что это подход, который вы должны предпринять в любом случае.

+0

Можете ли вы привести мне пример того, как вы могли бы использовать раскол в этом случае? Ive был googling но can not действительно находит хороший пример, спасибо заранее – JohnBanana

+0

@JohnBanana: сделано –

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

  • Нет связанных вопросов^_^