0

このプログラムは、ユーザーが入力した文字列が回文かどうかを判断します。

import acm.program.ConsoleProgram;

public class PurePalindrome は ConsoleProgram を拡張します {

public void run() {
    String originalString;
    String reversedString;
    boolean isPalindrome;

    originalString = readLine("? ");
    reversedString = reverseString(originalString);
    isPalindrome = checkPalindrome(originalString, reversedString);

    println("The word you entered " + determineWord(isPalindrome)
            + " a palindrome. " + originalString + " reversed is: "
            + reversedString + ".");
}

private boolean checkPalindrome(String word, String revWord) {
    if (revWord.equals(word)) {
        return true;
    } else {
        return false;
    }
}

private String reverseString(String wordToReverse) {
    String reversedWord = "";
    for (int i = 0; i < wordToReverse.length(); i++) {
        reversedWord = wordToReverse.charAt(i) + reversedWord;
    }
    return reversedWord;
}

private String determineWord(boolean palindrome) {
    if (palindrome) {
        return "is";
    } else {
        return "is not";
    }

}

}

これらすべてのメソッドは純粋な関数と見なされますか? そうでない場合、なぜですか?メソッドが純粋な関数かどうかを判断するのに少し苦労しています。

4

1 に答える 1

2

戻り値が引数だけに依存し、他のものには依存せず、副作用がない場合、メソッドは純粋な関数です。

したがって、最後の 3 つのメソッドは純粋な関数ですが、最初のメソッドはそうではありません。何も返さず、ユーザー入力に依存し、画面に出力するという副作用があります。

サイドノート:

if (revWord.equals(word)) {
    return true;
} else {
    return false;
}

に置き換える必要があります

return revWord.equals(word);
于 2013-11-30T22:46:04.163 に答える