ghazal_mohammady
دوشنبه 04 آذر 1392, 14:12 عصر
عرض سلام و خسته نباشید
این قطعه کد تبدیل infix به postfix را باید انجام بده، اما نمیدونم اشکال کارم کجاست، میشه خواهش کنم راهنماییم کنید؟
Scanner sc=new Scanner(System.in);
System.out.println("Plz enter a Postfix Math expression:");
Stack s=new Stack();
String op = "";
String input=sc.nextLine();
String []c=input.split("");
for(int i=0;i<c.length;i++)
{
if(c[i]==("("))
{
s.push(c[i]);
}
else if(c[i].matches("[\\d]"))
{
op+=c[i];
}
else if(operator(c[i]))
{ if(comp(c[i])>comp(s.pop()))
s.push(c[i]);
else
op+=s.pop();
}
else if(c[i]==")")
{
while(s.pop()!="(" && !s.isEmpety()){
op+=s.pop();
}
s.pop();
}
}
System.out.print(op);
}
public static int comp (String operator) {
if (operator=="^")
return 3;
if (operator == "/" || operator == "*")
return 2;
if (operator == "+" || operator == "-")
return 1;
return 0;
}
static boolean operator(String cs)
{
if(cs=="/"||cs=="*"||cs=="+"||cs=="-")
return true;
else
return false;
}
این قطعه کد تبدیل infix به postfix را باید انجام بده، اما نمیدونم اشکال کارم کجاست، میشه خواهش کنم راهنماییم کنید؟
Scanner sc=new Scanner(System.in);
System.out.println("Plz enter a Postfix Math expression:");
Stack s=new Stack();
String op = "";
String input=sc.nextLine();
String []c=input.split("");
for(int i=0;i<c.length;i++)
{
if(c[i]==("("))
{
s.push(c[i]);
}
else if(c[i].matches("[\\d]"))
{
op+=c[i];
}
else if(operator(c[i]))
{ if(comp(c[i])>comp(s.pop()))
s.push(c[i]);
else
op+=s.pop();
}
else if(c[i]==")")
{
while(s.pop()!="(" && !s.isEmpety()){
op+=s.pop();
}
s.pop();
}
}
System.out.print(op);
}
public static int comp (String operator) {
if (operator=="^")
return 3;
if (operator == "/" || operator == "*")
return 2;
if (operator == "+" || operator == "-")
return 1;
return 0;
}
static boolean operator(String cs)
{
if(cs=="/"||cs=="*"||cs=="+"||cs=="-")
return true;
else
return false;
}