如何将char数组传递给方法并返回一个布尔值

时间:2015-01-06 16:57:26

标签: java methods boolean palindrome arrays

我正在尝试编写一个程序来检查单词是否是回文。我的代码编译但isItPalindrome方法中的代码似乎根本没有运行。我希望有人可以指出我哪里出错了。这是我的代码:

class Main
{
public static void main ( String args[] )
{
    System.out.print ("#Enter word");
    String word = BIO.getString();

    String wordLowerCase = word.toLowerCase();                                        // converts word to lower case (only way i could think of to ignore case)
    char letters[] = wordLowerCase.toCharArray();                                     // converts string into an array of character


    while ( !word.equals ("END")){
        if (isItPalindrome(letters) == true)
        {
            System.out.print (""+word+"");
            System.out.println ("   is a palindrome");

        }
        else if (isItPalindrome(letters) == false)
        {
            System.out.print (""+word+"");
            System.out.println ("   is not a palindrome");
        }

        System.out.print ("#Enter word");
        word = BIO.getString();

    }

}

public static boolean isItPalindrome ( char letters[]){

    boolean palindrome = true;
    if (letters.length%2 == 0){
        for (int index=0; index<letters.length/2-1; index++)                              //index will finish at letters/2  
        {
            if (letters[index] != letters[letters.length-index-1])                                       //checks if index is the same as its opposite letter
            {
                return false;

            }
            else                                                                         //if any pairs of letters are not in ascending order then it returns fasle and breaks out of the loop
            {
                palindrome = true;

            }

        }
    }
    else{
        for (int index = 0; index < (letters.length-1)/2-1; index++)
        {
            if (letters[index] != letters[letters.length-index-1]){

                return false;

            }
            else{

                palindrome = true;
            }  

        }
    }

    return palindrome;
}

}

3 个答案:

答案 0 :(得分:1)

除了最初的单词,您的角色数组letters永远不会反映主方法中while循环中的当前word。当你说出你的方法时,我不知道你的意思,而且似乎根本没有。#34;但我认为你的意思是它运行错误的输出。这就是原因之一。一定要打电话

wordLowerCase = word.toLowerCase();
letters = wordLowerCase.toCharArray();

while循环的每次迭代。

旁注:在isItPalindrome方法中,您根本不需要任何else语句或布尔palindrome。简单return false如果你发现这个词不像你现在那样的回文。然后,如果你已经到了这个词的末尾,它必须是一个回文,你可以return true

答案 1 :(得分:0)

main方法中存在一些问题,例如char-array从未更新过,而回文方法远非复杂,这是工作版本:

public static void main(String args[]) {
    System.out.print("#Enter word: ");
    String word = BIO.getString();

    while (!word.equals("END")) {
        char[] letters = word.toLowerCase().toCharArray();

        if (isItPalindrome(letters) == true) {
            System.out.println(word + "   is a palindrome");
        } else {
            System.out.print(word + "   is not a palindrome");
        } // OR
        // Use this one-liner instead of the if:
        // System.out.println(word + isItPalindrome(letters) ?
        //                     "   is a palindrome" : "   is not a palindrome");

    System.out.print("#Enter word: ");
    word = BIO.getString();
    }

}

public static boolean isItPalindrome(char letters[]) {
    for (int i = 0; i < letters.length / 2; i++) {
        if (letters[i] != letters[letters.length - i - 1]) {
            return false;
        }
    }

    return true;
}

希望这有帮助。

答案 2 :(得分:0)

首先,回答标题中的问题:

public boolean palindrome(char C)

返回类型为boolean,但要求您传递一个字符。

第二

你以反转单词的方式过度复杂化以检查它们。您可以简单地将单词作为字符串,并将其拆分,将其放入Characters数组中。然后将每个char变量放入Stack。然后当你将它们从堆栈中逐个取出时,将它们复制到另一个Character s数组中。