2013-03-01 4 views
0

Я стремление java-пользователя, берущего колледж, и я столкнулся с проблемой. Мой проф. сказал нам написать java-программу, которая обнаруживает 5-значный номер на основе палиндрома. Я что-то написал, но он не будет работать так, как я планировал. Могу я помочь? Использование NetBeans IDE.Почему мой палиндром не работает?

package palindrome; 

import javax.swing.JOptionPane; 

public class Palindrome { 

    public static void main(String[] args) { 

     String stringNumber; 
     int number; 
     String stringPal; 
     int palindrome; 

     stringNumber = JOptionPane 
       .showInputDialog("Please, if you will, enter a five digit palindrome: "); 
     number = Integer.parseInt(stringNumber); 

     if (number < 10000 && number > 99999) { 
      System.out 
        .println("Your number is invalid, please enter a FIVE digit number: "); 
     } else if (number % 10 == number % 100) { 
      System.out.println("your number: " + number + "is a palindrome"); 
     } else { 
      System.out.println("You FAIL loser"); 
     } 
    } 
} 
+5

Если вы продолжаете оскорблять себя, как *, вы проиграете FAIL *, конечно, вы не хотите найти свои собственные ошибки :). –

+1

Кстати, 999% 10 = 9 и 999% 100 = 99. Вот в чем проблема. –

+0

да. Ответ нуждается в некоторой работе ... – DigCamara

ответ

0

Как уже указывалось, ваша логика для палиндрома неверна.

Что нужно проверить, если строка/номер одинакова при обратном.

Итак, предположим, что вы хотите проверить, является ли строка палиндром, отмените ее и проверьте, совпадает ли она с исходной строкой.

Вы должны попытаться заполнить этот шаблон:

boolean isPalindrome(String s){ 

    String reverseString = reverseString(s); 

    if(reverseString.equals(s)){ 
     return true; 
    } 

    return false; 
} 

String reverse(String s){ 
    //add code to reverse String. (and optionally check if it is Integer, if it is a requirement) 
} 

Теперь вы можете Google, как изменить строку.

PS: Вы можете взглянуть на класс StringBuilder.

+1

Спасибо, это именно то, что мне нужно. Это правильно на моем уровне и не слишком сложно для того, где я сейчас нахожусь в Java. Я очень благодарен за помощь от sam-i-am и rgettman –

11

Неправильная логика палиндрома. Вы проверяете, остается ли остаток, если он делен на 10, равен остатку, если делится на 100 - это так, если и только если в десятичной цифре есть 0. Это не определение palindrome.

+5

+1 для не обеспечения реализации палиндрома, вместо этого приводя к OP, чтобы найти свое собственное решение –

+0

Спасибо за отзыв –

0

Я не понимаю, как число% 10 == число% 100, подразумевает палиндром, но все, что он делает, сравнивает значение последних двух цифр со значением последней 1 цифры.

Мой совет будет принимать ввод как string или char массива и сравнить последний элемент строки к первому, а затем продолжить, пока вы не попали в среднем

вот некоторый psudo-код:

isPalindrome = true; 

for i=0 to stringLength 

    if(input[i] != input[length - i - 1]) 
     isPalindrome = false; 
+0

Спасибо за ваш отзыв, это помогло много –

Смежные вопросы