import java.util.Scanner; public class PalindromChecker { public void check(String str) { StackOfChars stack = new StackOfChars(str.length()); int step = 1; boolean flag = true; for(int i = 0; i < str.length(); i++) { char s = str.charAt(i); if(step == 1) { if(s == 'a' || s == 'b') stack.push(s); else if(s == '@') step = 2; else{ System.out.println("Error: "+s+" at "+(i+1)); flag = false; break; } }//if else { // step = 2 if(stack.isEmpty()) { System.out.println("Error: missing symbols before @"); flag = false; break; } else if(s != 'a' && s != 'b') { System.out.println("Error: "+s+" at "+(i+1)); flag = false; break; } else { char c = stack.pop(); if(c != s) { System.out.println("Error: "+s+" at "+(i+1)); flag = false; break; } } }//else }//for if(flag && step == 1) { System.out.println("Error: missing symbol @"); flag = false; } if(flag) { if(!stack.isEmpty()) System.out.println("Error: missing symbols after @"); else System.out.println("Yes"); } }//method }//class class TestPalindromChecker { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("To stop testing enter: No more"); System.out.println("Starting..."); while(true) { System.out.print(" Word: "); String word = s.nextLine(); if(word.equals("No more")) { System.out.println("End of test!"); break; } else (new PalindromChecker()).check(word); } } }