Assignment11javaSolutionPlease follow the code and comments
Assignment11.java
Solution
Please follow the code and comments for description :
CODE :
a) Assignment11.java :
import java.io.*; // required imports for the file
public class Assignment11 { // class to run the code
public static void main(String[] args) throws IOException { // driver method
 char input1; // required initialisations
 String line = new String();
printMenu(); // call the method to print the options
InputStreamReader isr = new InputStreamReader(System.in); // read the data
 BufferedReader stdin = new BufferedReader(isr);
do // will ask for user input
 {
 System.out.println(\"What action would you like to perform?\");
 line = stdin.readLine();
 input1 = line.charAt(0);
 input1 = Character.toUpperCase(input1);
if (line.length() == 1) {
 // matches one of the case statements
 switch (input1) {
 case \'E\': //Enter Problem parameters
 System.out.print(\"Please enter a string to check:\ \");
 String inputString = stdin.readLine().trim();
//create an object of PalindromeChecker using the input string
 PalindromeChecker checker = new PalindromeChecker(inputString);
 checker.check();
 break;
 case \'Q\': //Quit
 break;
 case \'?\': //Display Menu
 printMenu();
 break;
 default:
 System.out.print(\"Unknown action\ \");
 break;
 }
 } else {
 System.out.print(\"Unknown action\ \");
 }
 } while (input1 != \'Q\' || line.length() != 1);
 }
/**
 * The method printMenu displays the menu to a user*
 */
 public static void printMenu() {
 System.out.print(\"Choice\\t\\tAction\ \"
 + \"------\\t\\t------\ \"
 + \"E\\t\\tEnter String\ \"
 + \"Q\\t\\tQuit\ \"
 + \"?\\t\\tDisplay Help\ \ \");
 }
 }
 b) PalindromeChecker.java :
import java.util.Stack; // required imports
 import java.util.LinkedList;
 import java.util.Objects;
 import java.util.Scanner;
public class PalindromeChecker { // class to run the code
private Stack<Character> charStack; //stack can contain characters
 private LinkedList<Character> charQueue; //queue can contain characters
 private String inputString;
//Constructor to initialize member variables
 public PalindromeChecker(String inputString) {
 charStack = new Stack<Character>();
 charQueue = new LinkedList<Character>();
 this.inputString = inputString;
 }
//The check method checks if an input string is a palindrome or not,
 //and prints its result.
 public void check() {
 boolean success = true; //success indicates whether palindrome or not
 boolean done = false; //it is used to stop the while loop
 int i = 0; //i wil be used as an index of the inputString
while (!done) {
//until the end of inputString or it encounters \'#\' character
 //take each character in inputString from left and add it to charStack and charQueue
 //prints out the substring extracted from the input string using queue\'s toString method
   
 for (int m = 0; m < inputString.toCharArray().length; m++) {
 charQueue.add(inputString.charAt(m));
 charStack.push((Character) inputString.charAt(m));
 }
 System.out.print(\"The input \" + charQueue.toString());
//until the charQueue or charStack becomes empty
 //remove a character from each of charStack and charQueue, and check if they are same.
 //If they are different, then print out the approproate message (\" is not a palindrome\ \")
 //and also print which first set of two characters are different
 //(\"The characters \' \' and \' \' do not match\ \ \") -- note that you need to print
 //two such characters inbetween \' \'
 //Also set success to false, so that the following \"if\" statement will be skipped
   
 while (!charQueue.isEmpty()) {
 Character a = charQueue.remove();
 Character b = charStack.pop();
 if (!a.equals(b)) {
 success = false;
 System.out.print(\" is not a palindrome\ \ \");
 System.out.print(\"The character \'\"+a+\"\' and \'\"+b+\"\' do not match.\ \ \");
 break;
 }
 }
 if (success == true) {
 System.out.print(\" is a palindrome\ \ \");
 } else {
 break;
 }
//i reaches the end of string, it is done processing the inputString
 if (i == inputString.length()) {
 done = true;
 } else {
 i++;
 success = true; //set it back to true for the next substring to check
 }
 } //end of while loop
 } //end of check( ) method
 } // end of PalindromeChecker class
 OUTPUT :
Choice       Action
 ------       ------
 E       Enter String
 Q       Quit
 ?       Display Help
What action would you like to perform?
 e
 Please enter a string to check:
 masm
 The input [m, a, s, m] is not a palindrome
The character \'a\' and \'s\' do not match.
What action would you like to perform?
 e
 Please enter a string to check:
 mushroom
 The input [m, u, s, h, r, o, o, m] is not a palindrome
The character \'u\' and \'o\' do not match.
What action would you like to perform?
 q
Hope this is helpful.



