Search code examples
javaconsolepalindrome

Make the program the you if the word you've inputed in the console is a palindrome or not in Java


I've been trying to make this program work, have the person write a word in the console and make the console have an output saying if that word is or isn't a palindrome.

package sct;

import java.util.Scanner;

public class Assignment3Problem4 {

    public static void main(String[] args) {

        Scanner reader = new Scanner(System.in);
        System.out.println("Enter a  a string: ");
        String DAWORD = reader.nextLine();

        reader.close();

        int n = DAWORD.length();
        boolean isPalindrome = true;
        for (int i = 0; i < n; ++i) {
            if (DAWORD.charAt(i) != DAWORD.charAt(n - i - 1)) {

                isPalindrome = false;
                break;
            }
            if (isPalindrome)
                System.out.println("This word is a palindrome");
            else
                System.out.println("This word is not a palindrome");
        }
    }
}

Sadly, this didn't work and the console doesn't let me input a string, can someone find out why and fix the code?


Solution

  • You shouldn't print whether the word is a palindrome (or not) until after the for loop. That's the only issue I had running the posted code.

    Scanner reader = new Scanner(System.in);
    System.out.println("Enter a  a string: ");
    String DAWORD = reader.nextLine();
    
    reader.close();
    
    int n = DAWORD.length();
    boolean isPalindrome = true;
    for (int i = 0; i < n; ++i) {
        if (DAWORD.charAt(i) != DAWORD.charAt(n - i - 1)) {
            isPalindrome = false;
            break;
        }
    }
    if (isPalindrome)
        System.out.println("This word is a palindrome");
    else
        System.out.println("This word is not a palindrome");
    

    You might want to remove reader.close() (as that also closes System.in).