static String convert(String exp)
{
String result="";
Stack s1=new Stack();
for(int i=0;i<exp.length();i++)
{
if(Character.isDigit(exp.charAt(i)))
{{
result=result+exp.charAt(i);
continue;
}
else
{
if(s1.empty())
{
s1.push(exp.charAt(i));
continue;
}
else
{
if(check(exp.charAt(i))>check(exp.charAt(i-1)))
s1.push(exp.charAt(i));
else
{
while(!s1.empty())
{
String a=s1.pop().toString();
result=result+a;
}
s1.push(exp.charAt(i));
}
}
}
}
while(!s1.empty())
{
String p=s1.pop().toString();
result=result+p;
}
return result;
}
static int check(char c)
{
switch (c) {
case '+':
case '-':
return 0;
case '*':
case '/':
return 1;
case '^':
return 2;
default:
throw new IllegalArgumentException("Operator unknown: " + c);
}
}
Вот мой код для преобразования выражения из infix в постфикс. Этот код работает нормально только с двумя операндами. Для более чем 2 операндов, таких как 6 + 9 * 7, он показывает IllegalArgumentException, которое я дал другим способом для определения приоритетов операторов. Пожалуйста, помогите мне уточнить, где я ошибаюсь?ошибка в заданном коде для инфикса для постфиксного преобразования для ввода, содержащего более двух операндов
Пожалуйста отступы ваш код, это трудно читать как что .. – Maroun