1

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
4

1 に答える 1