我正在尝试在 Java 中创建自己的 Stack 类。我不确定我的代码哪里出错了,但是如果我在我的程序控制台中输入一个实际的回文,它总是返回 false。我的问题出在哪里?
这是我的回文客户端文件:(我的 stack.java 类可以在同一个程序文件夹中访问。)
public static void main(String args[]) {
//declare both stacks
Stack<String> fwd = new Stack<String>();
Stack<String> rev = new Stack<String>();
//instance variables
String st1;
boolean palindrome = true;
Scanner in = new Scanner(System.in);
System.out.println("Enter a String and I will check if it is a palindrome: \n");
st1 = in.nextLine();
// Read the data in forward order into the Stack
for (int i =0; i < st1.length(); i++) {
fwd.push(Character.toString(st1.charAt(i)));
}
// Read the same data in reverse order into another Stack
for (int j = st1.length()-1; j >= 0; j--) {
rev.push(Character.toString(st1.charAt(j)));
}
System.out.println("The string you entered was: ");
System.out.println(fwd.display());
System.out.println(rev.display());
System.out.println();
System.out.println("Checking to see if " + st1 + " is a palindrome.");
System.out.println("/**********************************************");
//check fwd and rev against each other
while (!fwd.isEmpty() && !rev.isEmpty()) { // make sure stack in not empty
for (int i = 0; i < st1.length(); i++) { // go through each element in the stack
if (fwd.pop() == rev.pop()) //check if fwd pop and rev pop are the same
palindrome = true;
else
palindrome = false;
}//end for lop
}// end while loop
System.out.println(palindrome);
}// end main
}// end Palindrome
这是我的 Stack.java 文件:
public class Stack<E> implements StackInterface<E> {
//variables
private ArrayList<E> data;
private E element;
//constructor
public Stack() {
data = new ArrayList<E>();
}
//stack methods
public void push(E element) { //push new element into the stack
data.add(element);
}
public E pop() { //pop the element from the top
if (data.isEmpty()) //if stack is empty, throw exception
throw new EmptyStackException("The stack is empty.");
else //else, remove and return the element that is on top of the stack
return data.remove(data.size()-1);
}
public E peek() { //peek at the element on top of the stack without removing it
if (data.isEmpty()) //if stack is empty, throw exception
throw new EmptyStackException("The stack is empty.");
else //else, return the element that is on top of the class
return data.get(data.size()-1);
}
public String display() { //display the elements in the stack in the form of a String
if (data.isEmpty()) //if stack is empty, throw exception
throw new EmptyStackException("The stack is empty");
else //else, return elements as a String
return data.toString();
}
public boolean isEmpty() { //check to see if the stack is empty
if (data.size() == 0)
return true;
else
return false;
}
public int size() { //retrurn the number of elements in the stack
return data.size();
}
}// end Stack class