尝试使用堆栈识别回文时出现<identifier>错误?

时间:2019-03-04 16:39:49

标签: java stack palindrome

我正在做一项工作以识别回文,我必须使用堆栈来做到这一点。我目前收到消息错误:预期的标识符:

  

palStack.push(nextChar);

我的教授说我正在尝试将Stack用作原始类型,这就是为什么我得到错误的原因,但是我不确定他到底是什么意思?我对数据结构还很陌生,因此使用堆栈的任何技巧将不胜感激!

这是我遇到问题的部分:

public static void main(String[] args){
    int replay = 0; 
    Stack<char> palStack = new Stack<>(); 
    char nextChar; 
    int characterCount;
    String phrase, emptyPhrase = "", replayAns; 
    @SuppressWarnings("unchecked")
    Scanner reader = new Scanner(System.in); 

    while(replay != 1){
        System.out.println("Enter phrase: ");
        phrase = reader.nextLine(); 
        characterCount = phrase.length(); 

        System.out.print("Original phrase: "); 

        for(int i = 0; i < characterCount; i++){
            nextChar = phrase.charAt(i); 

            @SuppressWarnings("unchecked")
            palStack.push(nextChar);    
            System.out.print(nextChar); 
        }
    }
}

1 个答案:

答案 0 :(得分:0)

问题出在这一行:

Stack<char> palStack = new Stack<>();

您不能将基元/原始类型(在这种情况下为char)用作常规类型(https://docs.oracle.com/javase/tutorial/java/generics/types.html)。因此,您只需要使用引用类型,即java.lang.Character

Stack<Character> palStack = new Stack<>();