Java 使用堆栈的回文类的问题
我正在尝试使用堆栈编写一个回文类,以确定用户输入的单词是否是回文。在我的回文课上似乎有个问题。有人能帮我确认一下吗?我的程序可以工作,但无论我键入什么单词,它都会返回该单词不是回文Java 使用堆栈的回文类的问题,java,stack,palindrome,Java,Stack,Palindrome,我正在尝试使用堆栈编写一个回文类,以确定用户输入的单词是否是回文。在我的回文课上似乎有个问题。有人能帮我确认一下吗?我的程序可以工作,但无论我键入什么单词,它都会返回该单词不是回文 import java.util.Stack; public class Palindrome { public Palindrome() { Stack stack = new Stack(); String input = ""; boolean
import java.util.Stack;
public class Palindrome
{
public Palindrome()
{
Stack stack = new Stack();
String input = "";
boolean isPalindrome = false;
for(int i = 0; i < input.length(); i++)
{
stack.push(i);
}
String opposite = " ";
while(!stack.isEmpty())
{
opposite = opposite + stack.pop();
}
if(input.equals(opposite))
isPalindrome = true;
else
isPalindrome = false;
}//end main
}//end class Palindrome
您的输入为空,因为您在构造函数中将输入设置为“”。最好使用构造函数参数来包含输入,然后使用成员变量跟踪输入 您键入的代码可能更适合放在方法中(可能等于?您必须重写它)。您可能需要考虑将字符从输入字符串推到堆栈上,而不是0, 1, 2、3…n(其中n=input.length()-1)
您当前的
.equals(word)
没有像您认为的那样做,因为您没有提供重载。这是您的完整回文类吗?如果是,则没有要处理的输入
public class Palindrome
{
public static boolean isPalindrome(String input)
{
Stack stack = new Stack();
for(int i = 0; i < input.length(); i++)
{
stack.push(input.charAt(i));
}
String opposite = "";
while(!stack.isEmpty())
{
opposite = opposite + stack.pop();
}
return input.equals(opposite);
}//end main
}//end class Palindrome
你有几个bug
- 首先,需要向回文类提供输入李>
- 第二,当您使用堆栈反转输入时,将索引推到堆栈上,而不是推到字符上李>
- 第三,这不是一个很好的做法,做每一件事都不符合构造器。回文类不需要知道作为成员或用于初始化的输入
public class Palindrome
{
public static boolean isPalindrome(String input)
{
char[] inputArray = input.toCharArray();
bool isOk = true;
for(int i = 0; i < inputArray.length/2 && isOk; i++){
isOk &= inputArray[i] == inputArray[inputArray.length - i - 1];
}
return isOk;
} // end method
} //end class Palindrome
pal.equals(word)
比较两个给定对象。没有办法,你会得到正确的答案。请学习尝试学习使用类
、构造函数
、方法
的基础知识,然后实现逻辑。您的回文检查代码放置在错误的位置。首先,您检查回文的逻辑不应该在构造函数中,而可以创建一个静态方法来检查回文。就像@PrerakSola为equals compare two object所说的那样,由于您没有重写equals方法,它正在调用equals of object类来检查实例是否是相同的reference.isAlindrome没有在您的方法中定义,您可以返回input.equals(相反)代码>thx,我不小心删除了布尔o_o,至少有帮助吗?
System.out.println("Enter a word to determine if it is a palindrome: ");
word = type.nextLine(); //user types word
if(Palindrome.isPalindrome(word))
System.out.println("is a palindrome");
else
System.out.println("is not a palindrome\n");
public class Palindrome
{
public static boolean isPalindrome(String input)
{
char[] inputArray = input.toCharArray();
bool isOk = true;
for(int i = 0; i < inputArray.length/2 && isOk; i++){
isOk &= inputArray[i] == inputArray[inputArray.length - i - 1];
}
return isOk;
} // end method
} //end class Palindrome
public static void main(String[] args)
{
System.out.println("Enter a word to determine if it is a palindrome: ");
word = type.nextLine(); //user types word
if(Palindrome.isPalindrome(word)) {
System.out.println("is a palindrome");
} else {
System.out.println("is not a palindrome\n");
}
} // End of main