Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I have to upload this questions to the bellow code of stack.(with comments plz)

ID: 3582509 • Letter: I

Question

I have to upload this questions to the bellow code of stack.(with comments plz) (JAVA)

1) A = 3; // your code should store A and 3 as a key-value pair


2) B = 4; // your code should store B and 4 as a key-value pair


3) A; // your code should now look-up A and then display its value

4) later we (you) will add the ability to write

Y = A * B + 3;

5) Y; // your code should show 16

CODE:


import java.io.*; // for I/O
////////////////////////////////////////////////////////////////

class StackX {
private int maxSize;
private char[] stackArray;
private int top;

// --------------------------------------------------------------
public StackX(int s) // constructor
{
  maxSize = s;
  stackArray = new char[maxSize];
  top = -1;
}

// --------------------------------------------------------------
public void push(char j) // put item on top of stack
{
  stackArray[++top] = j;
}

// --------------------------------------------------------------
public char pop() // take item from top of stack

{
  return stackArray[top--];
}

// --------------------------------------------------------------
public char peek() // peek at top of stack
{
  return stackArray[top];
}

// --------------------------------------------------------------
public boolean isEmpty() // true if stack is empty
{
  return (top == -1);
}

// -------------------------------------------------------------
public int size() // return size
{
  return top + 1;
}

// --------------------------------------------------------------
public char peekN(int n) // return item at index n
{
  return stackArray[n];
}

// --------------------------------------------------------------
public void displayStack(String s) {
  System.out.print(s);
  System.out.print("Stack (bottom-->top): ");
  for (int j = 0; j < size(); j++) {
   System.out.print(peekN(j));
   System.out.print(' ');
  }
  System.out.println(" ");
}
// --------------------------------------------------------------
} // end class StackX
////////////////////////////////////////////////////////////////

class InToPost // infix to postfix conversion
{
private StackX theStack;
private String input;
private String output = "";

// --------------------------------------------------------------
public InToPost(String in) // constructor
{
  input = in;
  int stackSize = input.length();
  theStack = new StackX(stackSize);
}
// --------------------------------------------------------------

public String doTrans() // do translation to postfix
{
  for (int j = 0; j < input.length(); j++) {
   char ch = input.charAt(j);
   theStack.displayStack("For " + ch + " "); // *diagnostic*
   switch (ch) {
   case '+': // it’s + or -
   case '-':
    gotOper(ch, 1); // go pop operators
    break; // (precedence 1)
   case '*': // it’s * or /
   case '/':
    gotOper(ch, 2); // go pop operators
    break; // (precedence 2)
   case '(': // it’s a left paren
    theStack.push(ch); // push it
    break;
   case ')': // it’s a right paren
    gotParen(ch); // go pop operators
    break;
   default: // must be an operand
    output = output + ch; // write it to output
    break;
   } // end switch
  } // end for
  while (!theStack.isEmpty()) // pop remaining opers
  {
   theStack.displayStack("While "); // *diagnostic*
   output = output + theStack.pop(); // write to output
  }
  theStack.displayStack("End "); // *diagnostic*
  return output; // return postfix
} // end doTrans()
  // --------------------------------------------------------------

public void gotOper(char opThis, int prec1) { // got operator from input
  while (!theStack.isEmpty()) {
   char opTop = theStack.pop();
   if (opTop == '(') // if it’s a ‘(‘
   {
    theStack.push(opTop); // restore ‘(‘
    break;
   } else // it’s an operator
   {
    int prec2; // precedence of new op
    if (opTop == '+' || opTop == '-') // find new op prec
     prec2 = 1;
    else
     prec2 = 2;
    if (prec2 < prec1) // if prec of new op less
    { // than prec of old
     theStack.push(opTop); // save newly-popped op
     break;
    } else // prec of new not less
     output = output + opTop; // than prec of old
   } // end else (it’s an operator)
  } // end while
  theStack.push(opThis); // push new operator
} // end gotOp()
  // --------------------------------------------------------------

public void gotParen(char ch) { // got right paren from input
  while (!theStack.isEmpty()) {
   char chx = theStack.pop();
   if (chx == '(') // if popped ‘(‘
    break; // we’re done
   else // if popped operator
    output = output + chx; // output it
  } // end while
} // end popOps()
  // --------------------------------------------------------------
} // end class InToPost
////////////////////////////////////////////////////////////////

class InfixApp {
public static void main(String[] args) throws IOException {
  String input, output;
  while (true) {
   System.out.print("Enter infix: ");
   System.out.flush();
   input = getString(); // read a string from kbd
   if (input.equals("")) // quit if [Enter]
    break;
   // make a translator
   InToPost theTrans = new InToPost(input);
   output = theTrans.doTrans(); // do the translation
   System.out.println("Postfix is " + output + ' ');
  } // end while
} // end main()
  // --------------------------------------------------------------

public static String getString() throws IOException {
  InputStreamReader isr = new InputStreamReader(System.in);
  BufferedReader br = new BufferedReader(isr);
  String s = br.readLine();
  return s;
}
// --------------------------------------------------------------
} // end class InfixApp
////////////////////////////////////////////////////////////////

Explanation / Answer

Here I have used hashmap to store as key-value pair.
and the result of A*B+3 should be 15 instead of 16 since 3*4+3=12+3=15
here is the code. hope it helps.

import java.util.HashMap;


public class Temp {

   public static void main(String a[]){
   HashMap<String,Integer> map=new HashMap<>();
   map.put("A",3); //store A=3 as key-value pair A is key and value is 3
   map.put("B",4); //store B=4 as key-value pair B is key and 4 is value
  
   int A=map.get("A"); //get value of A
   int B=map.get("B");//get value of B
  
   int Y=A*B+3; //compute A*B+3
   System.out.println(Y);//print the result.
   }
}