Reputation: 1
hi am trying to write a palindrome checker code but if i enter "madam" it still tells me its not a palindrome please help. tell me whats causing it
import java.util.Scanner;
public class parlindrome
{
String original, reverse = "";
public void checkpalindrome(){
Scanner h = new Scanner(System.in);
System.out.println("enter a word : ");
original = h.nextLine();
int length = original.length();
for(int i = length-1; i >= 0; i--)
{
{
reverse = reverse + original.charAt(i);
if(original.equals(reverse))
{
System.out.println("entered word is a palindrom ");
}
else
{
System.out.println("entered word is not a palindrome ");
break;
}
}
}
}
public static void main(String[]args)
{
parlindrome k=new parlindrome();
k.checkpalindrome();
}
}
Upvotes: 0
Views: 101
Reputation: 2155
Just remove validation part from for loop. Your code should be as below:
for (int i = length - 1; i >= 0; i--)
reverse += original.charAt(i);
if (original.equals(reverse))
System.out.println("entered word is a palindrom ");
else
System.out.println("entered word is not a palindrome ");
h.close();
Upvotes: 0
Reputation: 2089
try this:
import java.util.Scanner;
public class parlindrome {
public boolean checkpalindrome(String original) {
String reverse = "";
int length = original.length();
for (int i = length - 1; i >= 0; i--) {
reverse += original.charAt(i);
}
if (reverse.equals(original)) {
System.out.println("entered word is a palindrom ");
return true;
}
System.out.println("entered word is not a palindrom ");
return false;
}
public static void main(String[] args) {
Scanner h = new Scanner(System.in);
System.out.println("enter a word : ");
String original = h.nextLine();
parlindrome k = new parlindrome();
k.checkpalindrome(original);
}
}
Upvotes: 0
Reputation: 6403
You could do it in a more effective way, using Java´s reverse.
public void checkpalindrome(){
Scanner h = new Scanner(System.in);
System.out.println("Enter a word: ");
String original = h.nextLine();
if(original.equals(new StringBuilder(original).reverse().toString()))
System.out.println("Entered word is a palindrom");
else
System.out.println("Entered word is not a palindrom");
}
Upvotes: 0
Reputation: 393781
You should finish the loop that reverses the String before checking if it's a palindrome :
for(int i=length-1;i>=0;i--) {
reverse=reverse+original.charAt(i);
}
if(original.equals(reverse)) {
System.out.println("entered word is a palindrom ");
}
Also, if you want this method to work more than once, you should make reverse
a local variable and initialize it to an empty String inside the method.
Upvotes: 1