Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无法实例化类型队列。为什么会这样?_Java_Queue - Fatal编程技术网

Java 无法实例化类型队列。为什么会这样?

Java 无法实例化类型队列。为什么会这样?,java,queue,Java,Queue,这是我分配堆栈/队列的主要方法。我的队列中不断出现错误,但堆栈中没有。stack类似乎工作得很好。我完全卡住了。它表示“无法实例化类型队列”。任何帮助都将不胜感激 public class mainMeth { public static void main(String[] args) throws FileNotFoundException { File Polish = new File("fILE4INPUT.txt");

这是我分配堆栈/队列的主要方法。我的队列中不断出现错误,但堆栈中没有。stack类似乎工作得很好。我完全卡住了。它表示“无法实例化类型队列”。任何帮助都将不胜感激

 public class mainMeth {

      public static void main(String[] args) throws FileNotFoundException {
            File Polish = new File("fILE4INPUT.txt");
            File out = new File("outfile.txt");

            Scanner f = new Scanner(Polish);
            Queue inputQ = new Queue();
            Stack stack2 = new Stack();
            Queue outputQ = new Queue();

            String word;
            Character ch;

            while (f.hasNext()) {
                String myString = f.nextLine();

                for (int count = 0; count < myString.length(); count++) {
                    ch = myString.charAt(count);
                    inputQ.addtoRear(ch);
                }
                while (!inputQ.ismtQ()) {
                    ch = inputQ.remfront();

                    if (isAlpha(ch)) {
                        // System.out.println(ch);
                        outputQ.addtoRear(ch);
                    } else {
                        if (isOperator(ch)) {

                            if (stack2.ismt()) {
                                stack2.push(ch);

                            } else {
                                if (valueOf(ch) > valueOf(stack2.top())) {
                                    stack2.push(ch);
                                } else {
                                    outputQ.addtoRear(stack2.pop());
                                    stack2.push(ch);
                                }
                            }
                        }
                    }
                }
                while (!stack2.ismt()) {
                    outputQ.addtoRear(stack2.pop());
                }
                System.out.println(outputQ.toString() + "\n\n");
                while (!outputQ.ismtQ()) {
                    outputQ.remfront();
                }

            }

        }

        public static boolean isAlpha(Character ch) {
            boolean retVal = false;
            if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z')
                retVal = true;


            return (retVal);
        }

        public static boolean isOperator(Character ch) {
            boolean retVal = false;
            if (ch == '+' || ch == '-' || ch == '/' || ch == '*')
                retVal = true;

            return (retVal);
        }

        public static int valueOf(Character ch) {
            int retval = 0;
            if (ch == '/' || ch == '*')
                retval = 2;
            else
                retval = 1;
            return retval;
        }


 }      
公共类main方法{
公共静态void main(字符串[]args)引发FileNotFoundException{
File Polish=新文件(“fILE4INPUT.txt”);
File out=新文件(“outfile.txt”);
扫描器f=新扫描器(抛光);
Queue inputQ=新队列();
Stack stack2=新堆栈();
Queue outputQ=新队列();
字符串字;
字符ch;
while(f.hasNext()){
字符串myString=f.nextLine();
对于(int count=0;countvalueOf(stack2.top()){
堆栈2.推送(ch);
}否则{
outputQ.addtoRear(stack2.pop());
堆栈2.推送(ch);
}
}
}
}
}
而(!stack2.ismt()){
outputQ.addtoRear(stack2.pop());
}
System.out.println(outputQ.toString()+“\n\n”);
而(!outputQ.ismtQ()){
outputQ.remfront();
}
}
}
公共静态布尔isAlpha(字符ch){
布尔retVal=false;

如果Java中的(ch>='A'&&ch='A'&&ch,
Queue
是一个接口,则不能直接实例化
Queue
。请参阅文档。请使用类似以下内容:

Queue<String> queue = new LinkedList<String>();
Queue Queue=newlinkedlist();

这是因为队列是一个接口。请查看oracle规范,以确定可以实例化的具体类。

Java队列是一个接口,无法安装。您需要一个实现队列的具体类。

在Java文档部分:

接口不能实例化,它们只能由 类或由其他接口扩展

然后您不能直接实例化。但是,您仍然可以根据接口的类型引用实现
队列
接口的对象,如:

// As I saw that you are adding Characters to your queue
Queue<Character> inputQ = new PriorityQueue<Character>();
//我看到您正在向队列中添加字符
Queue inputQ=new PriorityQueue();
您可以根据自己的需求选择适当的实现,以下是所有具体的和已知的实现类的列表:

ArrayBlockingQueue
ArrayQueue
ConcurrentLinkedQueue
ConcurrentLinkedQueue
DelayQueue
LinkedBlockingDeque
LinkedBlockingQueue
LinkedList
LinkedTransferQueue
PriorityBlockingQueue
PriorityQueue
SynchronousQueue


使用正确的语言标记问题可能会帮助您获得一些答案。队列的实际类(导入语句)是什么?如果它只是Java队列接口,则无法实例化,因为它是一个接口。