PDA

View Full Version : مبتدی: مشکل این کد



ghazal_mohammady
دوشنبه 11 آذر 1392, 18:32 عصر
عرض سلام و ادب خدمت اساتید و بزرگواران عزیز
میتونم خواهش کنم این کد رو بررسی کنید و بفرمایین مشکلش چیه؟ با زبان جاوا نوشتمش


import java.util.*;
public class Postfix {
public static void main(String [] args){

//public String infix2postfix(String input){
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].equals("("))
{
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()))
op+=s.pop();
//s.push(c[i]);
else if(comp(c[i])>comp(s.pop()))
s.push(c[i]);
}
else if(c[i].equals(")"))
{
while(!(s.pop().equals("(")))
{
op+=s.pop();
}
}
}
while(!s.isEmpety())
{
op+=s.pop();
}
System.out.print(op);

}

public static int comp (String operator) {
if (operator.equals("^"))
return 3;
if (operator.equals("/"))
return 2;
if( operator .equals("*"))
return 2;
if (operator .equals("+"))
return 1;
if(operator .equals("-"))
return 1;
return 0;
}
static boolean operator(String cs)
{
if(cs.equals("/")||cs.equals("*")||cs=="+"||cs.equals("-"))
return true;
else
return false;
}