此程序确定用户输入的字符串是否为回文。
import acm.program.ConsoleProgram;
公共类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";
}
}
}
所有这些方法都被视为纯函数吗?如果没有,为什么不呢?我在确定方法是否是纯函数时遇到了一些麻烦。
答案 0 :(得分:2)
如果一个方法的返回值完全取决于它的参数,而不是其他任何东西,并且它没有任何副作用,那么它就是一个纯函数。
所以最后三个方法是纯函数,而第一个方法不是:它不返回任何东西,取决于用户输入,并且具有在屏幕上打印的副作用。
旁注:
if (revWord.equals(word)) {
return true;
} else {
return false;
}
应替换为
return revWord.equals(word);