2015-02-08 4 views
2

У меня есть программа, где я набираю программу Java, чтобы проверить, является ли введенная строка палиндром. У меня есть 2 проблемы, которые я не могу, поскольку жизнь меня, похоже, выясняет.Palindrome checker - расстояние

Я набрал код, чтобы он сказал мне, является ли это палиндром, когда все строчные буквы и пробелы не используются. Каждый раз, когда я вхожу в палиндром с пространством в нем, он скажет мне, что это не палиндром. Думаю, я просто пропустил один маленький кусок кода, чтобы он работал.

import java.util.Scanner; 

public class HW3 { 

    public static void main(String[] args) { 
     Scanner keyboard = new Scanner(System.in); 

     String word; 
     String backwards = ""; 

     System.out.println("Enter a word or phrase and I'll tell you if it's a palindrome"); 
     word = keyboard.nextLine(); 

     int length = word.length(); 

     for (int i = length - 1; i >= 0; i--) { 
      backwards = backwards + word.charAt(i); 
     } 

     if (word.equalsIgnoreCase(backwards)) { 
      System.out.println(word + " is a palindrome!"); 
     } 
     else { 
      System.out.println("That is not a palindrome!"); 
      System.exit(0); 
     } 

     System.out.println("Done!"); 
    } 
} 
+0

Это действительно работает. Попробуйте сделать «ab ba». – Shahar

+0

Хорошо, это действительно сработало..Другие слова, которые не совсем такие, как ab ba, не работают, хотя ... Было сказано, чтобы проверить слово Taco cat, но в нем говорится, что это не палиндром. – c0212

+0

Это потому, что «taco cat» не соответствует «tac ocat». См. Мой ответ о том, как игнорировать пробелы. – aioobe

ответ

0

Ваша программа работает должным образом. (По крайней мере, как я ожидать, что она работает;. "taco cat" не равна "tac ocat" поэтому не следует рассматривать как palintrome)

Если вы хотите игнорировать от пространства, вы могли бы сделать

word = word.replaceAll("\\s", ""); 

сразу после чтения входной строки.

1

Вы, кажется, хотите удалить пробелы из своего сильного. Для этого используйте метод replace():

word.replace(" ", ""); 
+0

Если OP хочет не обращать внимания на '' '' 'Я уверен, он также хочет игнорировать' '\ t" '. – aioobe

1

Попробуйте удалить все пробелы перед выполнением проверки палиндром.

word = word.replaceAll("\\s","");