Kan het type Wachtrij niet instantiëren. Waarom is dit?

Dit is mijn belangrijkste methode voor een stacks/queues-opdracht. Ik krijg steeds een foutmelding met mijn wachtrij, maar niet met mijn stapel. De stack class lijkt prima te werken. Ik zit helemaal vast. Er staat “kan type wachtrij niet instantiëren”. Om het even welke hulp zou het meest gewaardeerd worden!

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;
        }
 }      

Antwoord 1, autoriteit 100%

In het gedeelte Interfacesvan de Java-documenten:

Interfaces kunnen niet worden geïnstantieerd—ze kunnen alleen worden geïmplementeerd door
klassen of uitgebreid met andere interfaces.

Dan kun je de interface Queue<E>. Maar u kunt nog steeds verwijzen naar een object dat de Queue-interface implementeert op basis van het type interface, zoals:

// As I saw that you are adding Characters to your queue
Queue<Character> inputQ = new PriorityQueue<Character>();

U kunt de juiste implementatie kiezen die u wilt gebruiken met betrekking tot uw vereisten, hier is een lijst van alle concrete en bekende implementatieklassen van de java-documenten:

ArrayBlockingQueue, ArrayDeque, ConcurrentLinkedDeque,
ConcurrentLinkedQueue, DelayQueue, LinkedBlockingDeque,
LinkedBlockingQueue, LinkedList, LinkedTransferQueue,
PriorityBlockingQueue, PriorityQueue, SynchronousQueue


Antwoord 2, autoriteit 53%

In Java is Queueeen interface, u kunt Queueniet rechtstreeks instantiëren. Zie hierde documentatie. Gebruik iets als dit:

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

Antwoord 3, autoriteit 18%

dat komt omdat wachtrij een interface is. bekijk de orakelspecificaties om de concrete klasse te verfijnen die kan worden geïnstantieerd. link


Antwoord 4, autoriteit 18%

Java Queue is een interface en kan niet worden ingesteld. Je hebt een concrete klasse nodig die Queue implementeert.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes