In: Computer Science
For this week’s assignment, you will write a program class that has two subroutines and a main routine. The program should be a part of the ‘Firstsubroutines’ class and you should name your project Firstsubroutines if you are using Netbeans.
Your program must prompt the user to enter a string. The program must then test the string entered by the user to determine whether it is a palindrome. A palindrome is a string that reads the same backwards and forwards, such as "radar", "racecar", and "able was I ere I saw elba". It is customary to ignore spaces, punctuation, and capitalization when looking for palindromes. For example, "A man, a plan, a canal. Panama!" is considered to be a palindrome.
To determine whether a string is a palindrome, you can: convert the string to lower case; remove any non-letter characters from the string; and compare the resulting string with the reverse of the same string. If they are equal, then the original string is considered to be a palindrome.
Here’s the code for computing the reverse of str:
String reverse; int i; reverse = ""; for (i = str.length() - 1; i >= 0; i--) { reverse = reverse + str.charAt(i); }
As part of your assignment, you must write a static subroutine that finds the reverse of a string. The subroutine should have one parameter of type String and a return value of type String.
You must also write a second subroutine that takes a String as a parameter and returns a String. This subroutine should make a new string that is a copy of the parameter string, except that all the non-letters have been omitted. The new string should be returned as the value of the subroutine. You can tell that a character, ch is a lower-case letter by testing if (ch >= 'a' && ch <= 'z')
(Note that for the operation of converting str to lower case, you can simply use the built-in toLowerCase subroutine by saying: str = str.toLowerCase();)
You should write a descriptive comment before each subroutine, saying what it does.
Finally, write a main() routine that will read in a string from the user and determine whether or not it is a palindrome. The main routine should use The program should print the string converted to lower case and stripped of any non-letter characters. Then it should print the reverse string. Finally, it should say whether the string is a palindrome. (Use the two subroutines to process the user's string.) For example, if the user's input is "Hello World!", then the output might be:
stripped: helloworld reversed: dlrowolleh This is NOT a palindrome. and if the input is "Campus motto: Bottoms up, Mac!", the output might be: stripped: campusmottobottomsupmac reversed: campusmottobottomsupmac This IS a palindrome.
You must complete your program, test, debug, and execute it. You should test two different cases, one that is a palindrome and another one that is not a palindrome. You must submit your java code file (preferably by cut and paste the code into the assignment dialog box). The output of your program must be captured by either copying the content in the output window and pasting it into the assignment dialog box or by capturing the image of the screen which contains the output of your java program or the output and submitting this with your assignment as an attachment. In windows you can capture a screen shot with the Ctrl Alt and Print Screen key sequence. This image can then be pasted into a Word, WordPad, or OpenOffice document which can be submitted with your assignment.
Here is the completed code for this problem. Comments are included, go through it, learn how things work and let me know if you have any doubts or if you need anything to change. If you are satisfied with the solution, please rate the answer. Thanks
// Firstsubroutines.java
import java.util.Scanner;
public class Firstsubroutines {
// method to reverse a String
static String reverse(String str) {
String reverse;
int i;
reverse = "";
// looping and prepending all characters to reverse
for (i = str.length() - 1; i >= 0; i--) {
reverse = reverse + str.charAt(i);
}
return reverse;
}
// method to strip all non alphabetic characters from str
static String strip(String str) {
// converting str to lower case
str = str.toLowerCase();
String stripped = "";
// looping and appending all alphabets to stripped
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
if (c >= 'a' && c <= 'z') {
// alphabet
stripped += c;
}
}
return stripped;
}
public static void main(String[] args) {
// scanner for reading input
Scanner scanner = new Scanner(System.in);
System.out.print("Enter a String: ");
// reading text
String text = scanner.nextLine();
// stripping and displaying it
text = strip(text);
System.out.println("\nstripped: " + text);
// reversing and displaying it
String rev = reverse(text);
System.out.println("\nreversed: " + rev);
// checking if text is palindrome and displaying the result
if (text.equals(rev)) {
System.out.println("\nThis IS a palindrome.");
} else {
System.out.println("\nThis is NOT a palindrome.");
}
}
}
/*OUTPUT 1*/
Enter a String: Hello World!
stripped: helloworld
reversed: dlrowolleh
This is NOT a palindrome.
/*OUTPUT 2*/
Enter a String: race car
stripped: racecar
reversed: racecar
This IS a palindrome.