Follow these steps: For this task, you are required to refactor the badly written program RPN.java. This program is a Reverse-Polish Notation calculator which uses a stack. A Reverse-Polish Notation calculator is a calculator that will calculate equations where the operator follows the operands. Therefore, instead of inputting an equation as "1 + 2", a Reverse-Polish Notation calculator would take the following input *12+" A stack is a data structure in which items are added to the top of the stack and removed from the top of the stack. It is therefore known as a last-in, first-out (LIFO) data structure. Stack terminology. o Push - is an operation that adds an item to the top of a stack. o Pop - is an operation that removes an item from the top of a stack. The pseudocode for this program is: o Get an equation (e.g. 23+) from the user as input. o Loop through the string value input by the user. ■ When you encounter a number (remember that numbers can include decimal points), add it to the stack (push). When you encounter an operator (e.g. +, -, /, etc.), pop two numbers from the stack and perform the appropriate calculation. o Display the answer of the calculation to the user. For this task you are required to: o Troubleshoot and debug the code so that it runs correctly.

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

import java.util.Scanner;

class StackNode {
public StackNode(double data, StackNode underneath) {
this.data = data;
this.underneath = underneath;
}

public StackNode underneath;
public double data;
}


class RPN {
public void into(double new_data) {
StackNode new_node = new StackNode(new_data, top);
top = new_node;
}

public double outof( ) {
double top_data = top.data;
top = top.underneath;
return top_data;
}

public RPN(String command) {
top = null;
this.command = command;
}

public double get( ) {
double a, b;
int j;

for(int i = 0; i < command.length( ); i++) {
// if it's a digit
if(Character.isDigit(command.charAt(i))) {
double number;

// get a string of the number
String temp = "";
for(j = 0; (j < 100) && (Character.isDigit(command.charAt(i)) || (command.charAt(i) == '.')); j++, i++) {
temp = temp + String.valueOf(command.charAt(i));
}

// convert to double and add to the stack
number = Double.parseDouble(temp);
into(number);
} else if(command.charAt(i) == '+') {
b = outof( );
a = outof( );
into(a + b);
} else if(command.charAt(i) == '-') {
b = outof( );
a = outof( );
into(a - b);
} else if(command.charAt(i) == '*') {
b = outof( );
a = outof( );
into(a * b);
} else if(command.charAt(i) == '/') {
b = outof( );
a = outof( );
into(a / b);
}
else if(command.charAt(i) == '^') {
b = outof( );
a = outof( );
into(Math.pow(a, b));
} else if(command.charAt(i) != ' ') {
throw new IllegalArgumentException( );
}
}

double val = outof( );

if(top != null) {
throw new IllegalArgumentException( );
}

return val;
}

private String command;
private StackNode top;

/* main method */
public static void main(String args[]) {
while(true) {
Scanner in = new Scanner(System.in);
System.out.println("Enter RPN expression or \"quit\".");
String line = in.nextLine( );
if(line.equals("quit")) {
break;
} else {
RPN calc = new RPN(line);
System.out.printf("Answer is %f\n", calc.get( ));
}
}
}
}

Follow these steps:
For this task, you are required to refactor the badly written program
RPN.java. This program is a Reverse-Polish Notation calculator which
uses a stack.
A Reverse-Polish Notation calculator is a calculator that will calculate
equations where the operator follows the operands. Therefore, instead of
inputting an equation as "1 + -2", a Reverse-Polish Notation calculator
would take the following input "12 +".
A stack is a data structure in which items are added to the
top of the stack and removed from the top of the stack. It is
therefore known as a last-in, first-out (LIFO) data structure.
Stack terminology:
o Push is an operation that adds an item to the top
of a stack.
o Pop - is an operation that removes an item from the top of a stack.
The pseudocode for this program is:
o Get an equation (e.g. 23+) from the user as input.
o
Loop through the string value input by the user.
■ When you encounter a number (remember that numbers
can include decimal points), add it to the stack (push).
■ When you encounter an operator (e.g. +, -, /, etc.), pop two
numbers from the stack and perform the appropriate
calculation.
o Display the answer of the calculation to the user.
For this task you are required to:
o Troubleshoot and debug the code so that it runs correctly.
Transcribed Image Text:Follow these steps: For this task, you are required to refactor the badly written program RPN.java. This program is a Reverse-Polish Notation calculator which uses a stack. A Reverse-Polish Notation calculator is a calculator that will calculate equations where the operator follows the operands. Therefore, instead of inputting an equation as "1 + -2", a Reverse-Polish Notation calculator would take the following input "12 +". A stack is a data structure in which items are added to the top of the stack and removed from the top of the stack. It is therefore known as a last-in, first-out (LIFO) data structure. Stack terminology: o Push is an operation that adds an item to the top of a stack. o Pop - is an operation that removes an item from the top of a stack. The pseudocode for this program is: o Get an equation (e.g. 23+) from the user as input. o Loop through the string value input by the user. ■ When you encounter a number (remember that numbers can include decimal points), add it to the stack (push). ■ When you encounter an operator (e.g. +, -, /, etc.), pop two numbers from the stack and perform the appropriate calculation. o Display the answer of the calculation to the user. For this task you are required to: o Troubleshoot and debug the code so that it runs correctly.
o Fix the indentation and formatting of the code so that it adheres to
the guidelines provided here.
o
Make sure that all the names of variables, classes, methods, etc.
adhere to the guidelines provided here.
o
Refactor the code to improve the quality and readability of the code
in other ways highlighted in this task.
o Most students who have to resubmit this Task do so due to errors
and styling issues. To help you discover errors and styling issues
quicker (before submitting your Task), please install the linter,
SonarLint to your IDE or editor. Use SonarLint to identify problems
and clear each one of them until there are no issues being flagged.
By default, it's configured to flag issues based on the best practices
we've discussed in this review.
Transcribed Image Text:o Fix the indentation and formatting of the code so that it adheres to the guidelines provided here. o Make sure that all the names of variables, classes, methods, etc. adhere to the guidelines provided here. o Refactor the code to improve the quality and readability of the code in other ways highlighted in this task. o Most students who have to resubmit this Task do so due to errors and styling issues. To help you discover errors and styling issues quicker (before submitting your Task), please install the linter, SonarLint to your IDE or editor. Use SonarLint to identify problems and clear each one of them until there are no issues being flagged. By default, it's configured to flag issues based on the best practices we've discussed in this review.
Expert Solution
steps

Step by step

Solved in 3 steps with 4 images

Blurred answer
Knowledge Booster
Stack
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Similar questions
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education