2015-11-23 1 views
-2

Почему моя палиндромная программа работает правильно? Это всегда возвращает false, и я не могу сказать почему.Java Palindrome (Boolean Method) с итерационным решением (while loop)

Вот мой код:

public static boolean isPalindromIterative(String string) { 
    int a = 0; 
    int b = string.length() - 1;   
    while (b > a) { 
     if (a != b) {    
      return false; 
     } 
     a++; 
     b--;   
    } 
    return true; 
} 

ответ

1

Вы сравниваете значения а и Ь, которые не являются одинаковыми, когда вы начинаете сравнивать и, следовательно, вы получите от ложных вашего метода.

В вашем если условия, изменить его, чтобы быть string.charAt(a) != string.chatAt(b)

+0

yep помог мне :) спасибо:/сейчас я чувствую себя немой: D спасибо большое – manonmars

0

Когда вы говорите

while (b > a) { 
    if (a != b) { 

Это ясно, что a не равна b (или цикл не будет введен). В контексте, я считаю, вы хотели сравнить символы в String. Я хотел бы использовать String.toCharArray(), чтобы получить char[] и сделать что-то вроде

char[] chars = string.toCharArray(); 
while (b > a) { 
    if (chars[a] != chars[b]) { 
0

If b > a в коде while (b > a), то a не равна b в коде if (a != b).

0

Для проверки данной строки является палиндром или нет в java, просто используйте метод StringBuilder класса reverse() и проверьте данную строку.

public static boolean isPalindromIterativeStringBuilder(String string) { 
      StringBuilder sb = new StringBuilder(string); 
      sb.reverse(); //Reverse to the given string 
      return sb.toString().equalsIgnoreCase(string); //Check whether given string is equal to reverse string or not 
    }