Question

In: Computer Science

package mac286.LinkedLists; public class Postfix { private rStack<String> S; private String inSt; private ourLinkedList<String> inList, outList;...

package mac286.LinkedLists;

public class Postfix {
        private rStack<String> S;
        private String inSt;
        private ourLinkedList<String> inList, outList;
        public Postfix(String s) {
                S = new rStack<String>();
                inSt = s;
                outList = new ourLinkedList<String>();
                inList = new ourLinkedList<String>();
        }
        public void reset(String s) {
                S = new rStack<String>();
                inSt = s;
                outList = new ourLinkedList<String>();
                inList = new ourLinkedList<String>();
        }
        private boolean isOperator(char c) {
                if(c=='-'||c=='+'||c=='*'||c=='/')
                        return true;
                return false;
        }
        private boolean isParenthesis(char c) {
                if(c == '(' || c==')')
                        return true;
                return false;
        }
        private int precedence(char c) {
                if(c=='-'||c=='+')
                        return 1;
                else
                        return 2;
        }
        private void makeList() {
                //go through the string and extrat operands and operators
                for(int i = 0; i<inSt.length(); i++) {
                        if(inSt.charAt(i) == ' ')
                                continue;
                        else if (Character.isDigit(inSt.charAt(i))) {
                                String num = "";
                                while(i<inSt.length() && Character.isDigit(inSt.charAt(i))) {
                                        num += inSt.charAt(i);
                                        i++;
                                }
                                i--;
                                //add the number to the list 
                                inList.add(num);
                        } else if(isOperator(inSt.charAt(i))) {
                                String num = ""+inSt.charAt(i);
                                inList.add(num);
                        }else if(isParenthesis(inSt.charAt(i))) {
                                String num = ""+inSt.charAt(i);
                                inList.add(num);
                        }else {
                                System.out.println("Something is wrong !!");
                        }
                }
        }
        public void verify() {
                System.out.println(inList.toString());
        }
        public String convert() {
                this.makeList();
                
                while(inList.isEmpty() != true) {
                        String token = inList.remove();
                        if(Character.isDigit(token.charAt(0))){
                                //this is an operand append it to the out list
                                outList.add(token);
                        }else if(token.charAt(0) == '(') {
                                //push it to the stack
                                S.push(token);
                        }else if(token.charAt(0) == ')') {
                                String temp;
                                while(!(temp = S.pop()).equals("(")) {
                                        //append temp to outList
                                        outList.add(temp);
                                }
                        }else {
                                //token is an operator 
                                while(!S.isEmpty() && this.isOperator(S.peek().charAt(0)) && this.precedence(token.charAt(0)) <= this.precedence(S.peek().charAt(0))) {
                                        outList.add(S.pop());
                                }
                                S.push(token);
                        }
                }
                //empty the stack into outputList
                while(!S.isEmpty()) {
                        outList.add(S.pop());
                }
                
                String st = "";
                for(int i = 0; i < outList.size(); i++) {
                        st += outList.elementAt(i) + " ";
                }
                return st;
                
        }
        public void evaluate() {
                //evaluate the expression in outList. 
        }
        

}

Can you please do the evaluate the expression in outList. thank you. complete the evaluate.

Solutions

Expert Solution

public class Postfix {
        private rStack<String> S;
        private String inSt;
        private ourLinkedList<String> inList, outList;
        public Postfix(String s) {
                S = new rStack<String>();
                inSt = s;
                outList = new ourLinkedList<String>();
                inList = new ourLinkedList<String>();
        }
        public void reset(String s) {
                S = new rStack<String>();
                inSt = s;
                outList = new ourLinkedList<String>();
                inList = new ourLinkedList<String>();
        }
        private boolean isOperator(char c) {
                if(c=='-'||c=='+'||c=='*'||c=='/')
                        return true;
                return false;
        }
        private boolean isParenthesis(char c) {
                if(c == '(' || c==')')
                        return true;
                return false;
        }
        private int precedence(char c) {
                if(c=='-'||c=='+')
                        return 1;
                else
                        return 2;
        }
        private void makeList() {
                //go through the string and extrat operands and operators
                for(int i = 0; i<inSt.length(); i++) {
                        if(inSt.charAt(i) == ' ')
                                continue;
                        else if (Character.isDigit(inSt.charAt(i))) {
                                String num = "";
                                while(i<inSt.length() && Character.isDigit(inSt.charAt(i))) {
                                        num += inSt.charAt(i);
                                        i++;
                                }
                                i--;
                                //add the number to the list 
                                inList.add(num);
                        } else if(isOperator(inSt.charAt(i))) {
                                String num = ""+inSt.charAt(i);
                                inList.add(num);
                        }else if(isParenthesis(inSt.charAt(i))) {
                                String num = ""+inSt.charAt(i);
                                inList.add(num);
                        }else {
                                System.out.println("Something is wrong !!");
                        }
                }
        }
        public void verify() {
                System.out.println(inList.toString());
        }
        public String convert() {
                this.makeList();
                
                while(inList.isEmpty() != true) {
                        String token = inList.remove();
                        if(Character.isDigit(token.charAt(0))){
                                //this is an operand append it to the out list
                                outList.add(token);
                        }else if(token.charAt(0) == '(') {
                                //push it to the stack
                                S.push(token);
                        }else if(token.charAt(0) == ')') {
                                String temp;
                                while(!(temp = S.pop()).equals("(")) {
                                        //append temp to outList
                                        outList.add(temp);
                                }
                        }else {
                                //token is an operator 
                                while(!S.isEmpty() && this.isOperator(S.peek().charAt(0)) && this.precedence(token.charAt(0)) <= this.precedence(S.peek().charAt(0))) {
                                        outList.add(S.pop());
                                }
                                S.push(token);
                        }
                }
                //empty the stack into outputList
                while(!S.isEmpty()) {
                        outList.add(S.pop());
                }
                
                String st = "";
                for(int i = 0; i < outList.size(); i++) {
                        st += outList.elementAt(i) + " ";
                }
                return st;
                
        }
        public void evaluate() {
                string token= outlist.remove();

        }
        

}

Related Solutions

package compstore; public class Desktop{ private String brand; private float price; public Desktop(String brand, float price)...
package compstore; public class Desktop{ private String brand; private float price; public Desktop(String brand, float price) { this.brand = brand; this.price = price; } public String getBrand() { return brand; } public float getPrice() { return price; } } package compstore; public class DeskTopDeals{ // assume proper variables and other methods are here public void dealOfTheDay(Desktop[] items, int numItems){ /**************************** * your code would go here * ****************************/ } } Given the above Desktop class, write code that should go...
QUESTION 11 In util package, public class Example { public static void showMessage( String s ){...
QUESTION 11 In util package, public class Example { public static void showMessage( String s ){ ....... } public static int getInt( String prompt ){ ....... } } Using these method you see above to create a main method in your class called MyExam in the different package to get input and output. The output will tell the user what number is entered. If you entered a 5, the output will be: "The number you entered is 5.". QUESTION 12...
public class StringNode { private String item; private StringNode next; } public class StringLL { private...
public class StringNode { private String item; private StringNode next; } public class StringLL { private StringNode head; private int size; public StringLL(){ head = null; size = 0; } public void add(String s){ add(size,s); } public boolean add(int index, String s){ ... } public String remove(int index){ ... } } In the above code add(int index, String s) creates a StringNode and adds it to the linked list at position index, and remove(int index) removes the StringNode at position...
java programing Q: Given the following class: public class Student { private String firstName; private String...
java programing Q: Given the following class: public class Student { private String firstName; private String lastName; private int age; private University university; public Student(String firstName, String lastName, int age, University university) { this.firstName = fisrtName; this.lastName = lastName; this.age = age; this.university = university; } public String getFirstName(){ return firstName; } public String getLastName(){ return lastName; } public int getAge(){ return age; } public University getUniversity(){ return university; } public String toString() { return "\nFirst name:" + firstName +...
What is a package? What package is the Scanner class in? What package is the String class in?
What is a package? What package is the Scanner class in? What package is the String class in? 
public class Graph { private ST<String, SET<String>> st; public Graph() { st = new ST<String, SET<String>>();...
public class Graph { private ST<String, SET<String>> st; public Graph() { st = new ST<String, SET<String>>(); } public void addEdge(String v, String w) { // Put v in w's SET and w in v's SET. if (!st.contains(v)) st.put(v, new SET<String>()); if (!st.contains(w)) st.put(w, new SET<String>()); st.get(v).add(w); st.get(w).add(v); } public Iterable<String> adjacentTo(String v) { return st.get(v); } public Iterable<String> vertices() { return st.keys(); } // See Exercises 4.5.1-4 for V(), E(), degree(), // hasVertex(), and hasEdge(). public static void main(String[] args)...
Suppose we have a Java class called Person.java public class Person { private String name; private...
Suppose we have a Java class called Person.java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName(){return name;} public int getAge(){return age;} } (a) In the following main method which lines contain reflection calls? import java.lang.reflect.Field; public class TestPerson { public static void main(String args[]) throws Exception { Person person = new Person("Peter", 20); Field field = person.getClass().getDeclaredField("name"); field.setAccessible(true); field.set(person, "Paul"); } }...
package datastructure; public class UseQueue { public static void main(String[] args) { /* * Demonstrate how...
package datastructure; public class UseQueue { public static void main(String[] args) { /* * Demonstrate how to use Queue that includes add,peek,remove,pool elements. * Use For Each loop and while loop with Iterator to retrieve data. * */ } }
package datastructure; public class UseMap { public static void main(String[] args) { /* * Demonstrate how...
package datastructure; public class UseMap { public static void main(String[] args) { /* * Demonstrate how to use Map that includes storing and retrieving elements. * Add List<String> into a Map. Like, Map<String, List<string>> list = new HashMap<String, List<String>>(); * Use For Each loop and while loop with Iterator to retrieve data. * * Use any databases[MongoDB, Oracle, MySql] to store data and retrieve data. */ } }
java code ============ public class BankAccount { private String accountID; private double balance; /** Constructs a...
java code ============ public class BankAccount { private String accountID; private double balance; /** Constructs a bank account with a zero balance @param accountID - ID of the Account */ public BankAccount(String accountID) { balance = 0; this.accountID = accountID; } /** Constructs a bank account with a given balance @param initialBalance the initial balance @param accountID - ID of the Account */ public BankAccount(double initialBalance, String accountID) { this.accountID = accountID; balance = initialBalance; } /** * Returns the...
ADVERTISEMENT
ADVERTISEMENT
ADVERTISEMENT