The problem Write program in java that accepts users input and validates if the input is a palindrome. A palindrome is a word that reads the same forwards as it does backwards. For this exercise we will consider a palindrome a palindrome without punctuation.
Breaking it down // Create a Scanner object for keyboard input.
Scanner keyboard = new Scanner ( System . in );
// Get user input
System . out . print ( "Enter a word or phrase: " );
String userInput = keyboard . nextLine ();
Write a method isPalindrome /**
* Method should return true if a string is identified as a palindrome.
* There are many ways to do a palindrome check, this is just one of them.
* If you are performing checks on very, very long strings you may want to
* consider another algorithm.
*
* @param str
* @return
*/
public static boolean isPalindrome ( String str ) {
if ( str . length () <= 1 ) {
return true ;
} else {
String toCompare = str . replaceAll ( "\s+" , "" );
StringBuffer buffer = new StringBuffer ( toCompare );
String reversedString = buffer . reverse (). toString ();
if ( reversedString . equalsIgnoreCase ( toCompare )) {
return true ;
} else {
return false ;
}
}
}
Check word or phrase, display result boolean isAPalindrome = isPalindrome ( userInput );
if ( isAPalindrome ) {
System . out . print ( "The word or phrase is a palindrome" );
} else {
System . out . print ( "Sorry the word or phrase is NOT a palindrome" );
}
Output Enter a word or phrase: Able was I ere I saw Elba
The word or phrase is a palindrome
Unit tests @Test
public void is_a_palindrome_single_char () {
assertTrue ( PalindromeDiscoverer . isPalindrome ( "A" ));
}
@Test
public void is_a_palindrome () {
assertTrue ( PalindromeDiscoverer . isPalindrome ( "bob" ));
}
@Test
public void is_a_palindrome_mixed_case () {
assertTrue ( PalindromeDiscoverer . isPalindrome ( "A but tuba" ));
}
@Test
public void is_a_palindrome_longer_phrase () {
assertTrue ( PalindromeDiscoverer . isPalindrome ( "Able was I ere I saw Elba" ));
}
@Test
public void is_not_a_palindrome () {
assertFalse ( PalindromeDiscoverer . isPalindrome ( "Free beer, I am there..." ));
}
Level Up Validate user input Allow user to enter in more than one check A palindrome is often considered true excluding spaces or punctuation, enhance the program to punctuation Palindrome discoverer posted by Justin Musgrove on 20 September 2013
Tagged: java and java-exercises-beginner
Share on: Facebook Google+