簡體   English   中英

為什么我的回文不起作用?

[英]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位數字的值進行比較。

我的建議是將輸入作為stringchar數組,並將字符串的最后一個元素與第一個元素進行比較,然后繼續直到您擊中中間位置

這是一些偽代碼:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM