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