簡體   English   中英

回文計划

[英]Palindrome Program

我正在嘗試編寫一個程序,該程序將輸出從字符串輸入返回的回文符以及有多少個。 我不斷收到很多錯誤,但我仍在努力解決Java中一些較難的主題!

與往常一樣,這是我已經收到的所有答案,我們將不勝感激!

public static boolean Palindrome(String text) {
    int index;
    int palindrome;

    System.out.println("Please enter your text ");
    text = EasyIn.getString();
    for(index = 0; index < amount.length() / 2; index++) {
        if(text.charAt(index) != text.charAt(text.length() - index - 1)) {
            return false;
        }
    }
    System.out.println("The number of valid palindrome(s) is " + amount);
    amount = EasyIn.getString();
}

我認為問題出在text.length() amount.length() ,您應該使用text.length() ,因為您要遍歷一半的text 該算法工作正常。 這是一個簡化的示例:

public static boolean palindrome(String text)
{
    for (int index = 0; index < text.length() / 2; index++) {
        if (text.charAt(index) != text.charAt(text.length() - index - 1)) {
            return false;
        }
    }
    return true;
}

注意:

  • 您忘記添加一個return true語句,如果不添加,則可能是for循環完成並且沒有到達return語句,這將導致錯誤。
  • 我建議您遵循Java命名約定。 您的方法應類似於someMethodName而不是SomeMethodName來調用。 這最后一個用於類名。

編輯:正如@bobbel所說,您可以通過將text.length()分配給變量並在for使用它來改進此代碼。

可能有兩件事:

您使用的ammount變量可能是要在其中維護字符串的字符串數組,如果是這種情況,則必須先遍歷字符串數組,然后維護一個嵌套循環以檢查其中的字符串是palindrom還是不

或第二種情況是您使用了錯誤的變量,它可能是文本而不是ammount

公共靜態void main(String [] args){

    Scanner in = new Scanner(System.in);
    System.out.println("enter string to check for palidrome");
    String orginal = in.next();

    int start = 0;
    int middle = orginal.length()/2;
    int end = orginal.length() - 1;
    int i;

    for(i=start; i<=middle; i++) {
        if(orginal.charAt(start) == orginal.charAt(end)) {
            start++;
            end--;
        } else {
            break;
        }
    }

    if(i == middle+1) {
        System.out.println("palidrome");
    } else {
        System.out.println("not palidrome");
    }
} 

這是檢查Palindrom編號的最簡單方法。

package testapi;

public class PalindromNumber {

    public static void checkPalindrom(Object number) {
        StringBuilder strNumber = new StringBuilder(number.toString());
        String reverseNumber = strNumber.reverse().toString();
        if (number.toString().equals(reverseNumber)) {
            System.out.println(number + " is palindrom number");
        } else {
            System.out.println(number + " is not palindrom number");
        }
    }

    public static void main(String[] args) {
        checkPalindrom(101);
        checkPalindrom(10.01);
        checkPalindrom("aanaa");
    }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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