您的代码中存在一些错误:
首先你的 toUpperCase() 不起作用,因为您需要将此调用的结果分配回变量。所以替换这个: inputWord.toLowerCase(); 这样 : inputWord = inputWord.toLowerCase(); 。这来自 String 在Java中是不可变的。
toUpperCase()
inputWord.toLowerCase();
inputWord = inputWord.toLowerCase();
String
您还可以使用简单的正则表达式简化代码。使用 inputWord.replace("[ !',-]",""); 而不是所有的替换调用,并再次将结果分配给变量。像这样 : inputWord = inputWord.replace("[ !',-]","");
inputWord.replace("[ !',-]","");
inputWord = inputWord.replace("[ !',-]","");
现在你有一个null因为你永远不会初始化你的 letter 串。只需添加一点 letter="" 在循环之前,null应该消失。
letter
letter=""
最后只需使用 pop() 在堆栈上,在循环之后获取反向字符串并将其与原始字符串进行比较。像这样 :
pop()
if(inputWord.equalsIgnoreCase(stack.pop())){ JOptionPane.showConfirmDialog(null, "This is a Palindrome", "Is this a palindrome ?", JOptionPane.YES_OPTION, JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showConfirmDialog(null, "This is NOT a Palindrome", "Is this a palindrome ?", JOptionPane.YES_OPTION,JOptionPane.ERROR_MESSAGE); }