![](/img/trans.png)
[英]My palindrome checker isn't working on some but does on others? (JAVA)
[英]Why isn't my palindrome working?
我是一個有抱負的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");
}
}
}
您的回文邏輯不正確。 您檢查是否除以10的余數等於除以100的余數-且僅當十位數為0時,才是這種情況。 那不是回文的定義。
我不明白,數字%10 ==數字%100怎么表示回文,但是它所做的只是將最后2位數字的值與最后1位數字的值進行比較。
我的建議是將輸入作為string
或char
數組,並將字符串的最后一個元素與第一個元素進行比較,然后繼續直到您擊中中間位置
這是一些偽代碼:
isPalindrome = true;
for i=0 to stringLength
if(input[i] != input[length - i - 1])
isPalindrome = false;
正如已經指出的那樣,您對回文的邏輯是錯誤的。
您需要檢查的是字符串/數字在反轉時是否相同。
因此,假設您要檢查一個字符串是否為回文字符串,將其反轉並檢查它是否與原始字符串相同。
您應該嘗試完成此模板:
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
類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.