所以我正在开发一个识别回文的程序(前后相同的单词)。为此,我将一个字符串的内容放入一个队列中,并一次堆叠一个字符。然后我有一个for循环比较堆栈的条目和队列的条目,看看它们是否匹配。如果每个角色都匹配,那么我们有一个回文。任何不匹配的字符都会导致匹配标志变为false并打破循环。问题是我的for循环不会运行。该程序完全跳过它。实际上它告诉我我的“匹配”变量未使用。任何帮助,将不胜感激。感谢您阅读我的帖子。
** 我为我的模糊道歉。 Stack和Queue是我自己设计的类。它们接受String输入,将String分成字符(char类型),为每个字符创建一个节点并连接它们。 Stack排在第一位,Queue排在第一位。空白1和空白2是空节点,在每个节点中充当起始标记。
public void palVerify(String s)
{
boolean match=true;
//creates stack
Stack backward=new Stack(blank1);
backward.push(s);
//creates queue
Queue forward=new Queue(blank2);
forward.enqueue(s);
// THIS LOOP WONT RUN
for (int i=0; i < s.length(); i++)
{
if (backward.readTop()==forward.readFront())
{
backward.pop();
forward.dequeue();
}
else
{
match=false;
break;
}
}
if (match=true)
System.out.println("This word is a Palindrome");
else
System.out.println("This word is not a Palindrome");
}
答案 0 :(得分:1)
您永远不会在代码中评估match
,只会分配给它。这就是您获取未使用的变量警告的原因。
您可能希望在底部的if语句中评估match
- 将if(match=true)
(将匹配变量赋值为true)替换为if (match)
(用于评估变量和分支)基于其价值)。
在for循环中 - 它可能正在运行(您可以在其开头添加System.out.println("Here");
来证明它。但是,您使用==
比较字符串 - 字符串比较应该使用equals
方法。
我不确定blank1
和blank2
是什么;我假设它们是在您的方法之外声明的成员或静态变量。我不认为你检测回文的逻辑(比较backward.readTop
和forward.readFront
做你认为它做的事情,除非你使用自己的自定义版本{{ 1}}和Stack
)
答案 1 :(得分:-1)
public class JustForShow {
public boolean isPalindrome(String text){
if(text == null || text.isEmpty())
return false;
char []arr = text.toCharArray();
for (int i = 0,y = (arr.length - 1); i<y; i++,y--) {
if(arr[i] != arr[y]){
return false;
}
}
return true;
}
public static void main(String[] args) {
String palind = "ABCDDCBA";
JustForShow jfs = new JustForShow();
System.out.println(jfs.isPalindrome(palind));
}
}
答案 2 :(得分:-1)
这是一个有效的解决方案:
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a three-digit integer: ");
int number = input.nextInt();
if (number / 100 == number % 10)
System.out.println(number + " is a palindrome");
else
System.out.println(number + " is not a palindrome");
}