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