我是一个有抱负的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");
}
}
}
答案 0 :(得分:11)
你的回文逻辑不正确。您检查除以10时的余数是否等于除以100时的余数 - 当且仅当十位数中有0时才是这种情况。这不是palindrome的定义。
答案 1 :(得分:0)
我不明白,数字%10 ==数字%100,意味着回文,但它所做的只是将最后2位数的值与最后1位数的值进行比较。
我的建议是将输入作为string
或char
数组,并将字符串的最后一个元素与第一个元素进行比较,然后继续直到中间
这里有一些psudo代码:
isPalindrome = true;
for i=0 to stringLength
if(input[i] != input[length - i - 1])
isPalindrome = false;
答案 2 :(得分: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)
}
您现在可以谷歌如何反转字符串。
PS:你可能想看看StringBuilder
班。