Question: My program coverts a infix expression to postfix however I need to add user input validation so that the user's input must be 3-20 characters
My program coverts a infix expression to postfix however I need to add user input validation so that the user's input must be 3-20 characters long and
can only use single digits 0-9 and +, -, *, /, ^, (, ).
The user should be prompted to re-enter an expression if an invalid character is encountered or if the number of characters falls outside of the range (3-20 inclusive).
My code
import java.util.Stack; import java.util.Scanner; public class MyClass { static int getPrecedence(char checkChar) { if (checkChar == '+' || checkChar == '-') return 1; if (checkChar == '*' || checkChar == '/') return 2; if (checkChar == '(' || checkChar == ')') return 0; return -1; } public static void main(String[] args) { Stack < Character > stack = new Stack(); Scanner scanner = new Scanner(System.in); String result = ""; System.out.print("Enter expression: "); String inputStr = scanner.nextLine(); char[] inputCharArray = inputStr.toCharArray(); for (int i = 0; i < inputCharArray.length; i++) { char checkChar = inputCharArray[i]; if (checkChar != '+' && checkChar != '-' && checkChar != '/' && checkChar != '*' && checkChar != '(' && checkChar != ')') { result = result + checkChar; } else { if (checkChar != '(' && checkChar != ')') { if (stack.isEmpty()) { stack.push(checkChar); } else { while (getPrecedence(stack.peek()) >= getPrecedence(checkChar)) { result = result + stack.pop(); if (stack.isEmpty()) break; } stack.push(checkChar); } } else { if (checkChar == '(') stack.push(checkChar); else { while (stack.peek() != '(') { result = result + stack.pop(); } stack.pop(); } } } } while (!stack.isEmpty()) result = result + stack.pop(); System.out.println(result); } }
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
