2015-02-21 7 views
7

यह एक ढेर/कतार असाइनमेंट के लिए मेरी मुख्य विधि है। मुझे अपनी कतार के साथ एक त्रुटि मिल रही है, लेकिन मेरा ढेर नहीं। लगता है कि ढेर वर्ग बस ठीक काम कर रहा है। मैं पूरी तरह से अटक गया हूँ। यह कहता है "टाइप कतार को तुरंत चालू नहीं कर सकता"। कोई भी सहायता सराहनीय होगी!प्रकार कतार को तुरंत चालू नहीं कर सकता है। ऐसा क्यों है?

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


}  
+0

सही भाषा के साथ प्रश्न को टैग करके आप कुछ जवाब पाने में मदद कर सकते हैं। – infused

+0

कतार के लिए वास्तविक वर्ग (आयात विवरण) क्या है? यदि यह सिर्फ जावा कतार इंटरफ़ेस है तो इसे तत्काल नहीं किया जा सकता क्योंकि यह एक इंटरफ़ेस है। –

उत्तर

3

जावा में, Queue एक इंटरफेस है, तो आप Queue सीधे दृष्टांत नहीं कर सकते। प्रलेखन here देखें। कृपया इस तरह कुछ उपयोग करें:

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

ऐसा इसलिए है क्योंकि कतार एक इंटरफ़ेस है। एक ठोस वर्ग को ठीक करने के लिए ऑरैकल चश्मे की जांच करें जिसे तत्काल किया जा सकता है। link

2

जावा कतार एक इंटरफ़ेस है और इसे इंस्टाल नहीं किया जा सकता है। आपको एक ठोस वर्ग की आवश्यकता है जो कतार लागू करता है।

+0

@Pshemo फिक्स्ड, धन्यवाद। –

9

जावा किए गए दस्तावेज़ों की Interfaces अनुभाग में:

इंटरफेस instantiated-वे केवल वर्गों द्वारा कार्यान्वित नहीं किया जा सकता जा सकता है या अन्य इंटरफेस के लिए बढ़ा दी।

फिर आप सीधे interface Queue<E> को तुरंत चालू नहीं कर सकते हैं। लेकिन, आप अभी भी एक उद्देश्य यह है कि अंतरफलक के प्रकार के आधार पर Queue इंटरफ़ेस लागू करता है, की तरह का उल्लेख कर सकते हैं:

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

आप पर्याप्त कार्यान्वयन अपनी आवश्यकताओं के बारे में उपयोग करने के लिए चुन सकते हैं, यहाँ सब ठोस की एक सूची है और को लागू करने क्लासेस में जाना जाता है से यह java docs है:

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

संबंधित मुद्दे

 संबंधित मुद्दे