Метод searchStacks (Stack<E>, E) в типе SearchStack<E> не применим для аргументов (Stack<String>, String)
Я пытаюсь создать универсальный метод для поиска в стеке элемента "e", используя очередь и вернуть стек в его исходные статуи.
но я продолжаю получать сообщение об ошибке "Метод searchStacks(Stack, E) в типе SearchStack не применим для аргументов (Stack, String) ", когда я вызываю метод "searchStacks"
Пожалуйста, помогите, спасибо заранее.
import java.util.Stack;
import java.util.Stack.* ;
public class SearchStack<E> extends Object {
public static void main (String [] args ) {
Stack < String > test = new Stack () ;
for (int i = 0 ; i < 5 ; i ++ ) {
test.push("a" + i ) ; }
System.out.println (test.toString()) ;
System.out.println ( searchingStacks (test , "a3") ) ;
}
public boolean searchingStacks (Stack<E> s1 , E e) {
boolean result = false ;
Queue <E> temp = new LinkedQueue () ;
while (s1.isEmpty() == false )
{
if (s1.peek() == e ) { result = true ; }
temp.enqueue(s1.pop());
}
while (temp.isEmpty() == false ){
s1.push( temp.dequeue() ) ;
}
while (! s1.isEmpty() ) { temp.enqueue(s1.pop());}
while (! temp.isEmpty() ) { s1.push(temp.dequeue()) ; }
return result ;}
}
1 ответ
Решение
main
метод является статическим, поэтому вы не можете вызвать searchingStacks
прямо там. Экземпляр класса необходим для вызова метода экземпляра.
public class SearchStack<E> extends Object
{
public static void main(String[] args)
{
SearchStack<String> ss = new SearchStack<String>();
Stack<String> stack = new Stack<String>();
for (int i = 0; i < 5; i++)
{
stack.push("a" + i);
}
System.out.println(stack.toString());
System.out.println(ss.searchingStacks(stack, "a3"));
}
...
}