2016-02-08 7 views
5

मैं जावा में नया हूं और वर्तमान में एक प्रोग्राम लिख रहा हूं जो वाक्यों वाली टेक्स्ट फ़ाइल के डिलीमीटर के लिए उपयोग-दर्ज तर्क लेता है, और फिर वाक्य की संख्या निर्धारित करता है प्रदत्त डिलीमीटर पर आधारित उस पाठ फ़ाइल के भीतर।जावा - यदि उपयोगकर्ता उपयोगकर्ता द्वारा दर्ज किए गए डिलीमीटर के साथ समाप्त होता है, तो x

जब मेरे Main.java चल रहा उपयोगकर्ता ऐसा करने में सक्षम होना चाहता हूँ निम्नलिखित (जहां -d सीमांकक के लिए झंडा है और निम्न वर्ण परिसीमक हैं):

जावा मुख्य -d!?। या जावा मुख्य-डी।

या कोई अन्य संयोजन। मेरे प्रश्न हैं:

  1. क्या ड्रिमिटर को स्ट्रिंग या सरणी के रूप में स्टोर करने का सबसे अच्छा तरीका है?
  2. मेरे प्रोग्राम को स्पष्ट रूप से पास किए गए डिलीमीटरों का उपयोग करने के लिए कैसे कहूं? वर्तमान में मेरा प्रोग्राम निम्न कार्य करता है:

यह देखने के लिए जांचता है कि कोई शब्द निर्दिष्ट किसी भी डिलीमीटर के साथ समाप्त होता है या नहीं। जैसा:

if (word.endsWith(delimitersStringorArray.contains()) { 
      sentenceCount++ 
    } 

मुझे आशा है कि यह समझ में आता है और मैं यदि आवश्यक हो तो किसी भी अधिक स्पष्टीकरण प्रदान कर सकते हैं:

if (word.endsWith(".") || word.endsWith("!") || word.endsWith("?")) { 
      sentenceCount++ 
} 

लेकिन बजाय मैं इसे होने के लिए कुछ की तरह चाहते हैं। मैंने खोज करने की कोशिश की लेकिन मुझे मेरा विशिष्ट प्रश्न नहीं मिला।

धन्यवाद!

उत्तर

4

शायद सबसे अच्छा के रूप में है delimiter एक String सरणी। क्योंकि विधि endsWith पैरामीटर के रूप में String का उपयोग करें।

समस्या

उस वर्ग java.lang.String में endsWith की वास्तविक संस्करण संभव सीमांकक की एक सरणी को स्वीकार नहीं करता है, लेकिन वह ऐसा ही करने के लिए एक कस्टम कोड बनाने के लिए संभव है:

public class StringUtility { 
    public static boolean endsWith(String str, String[] delimiters) { 
     for (String delimiter : delimiters) { 
      if (str.endsWith(delimiter)) { 
       return true; 
      } 
     } 
     return false; 
    } 
} 

और यह की तरह निम्नलिखित

String[] delimiters = { ".", "!", "?" }; 
if (StringUtility.endsWith("yourWord", delimiters)) { 
    // Do something 
} 

ध्यान दें कि यह एक अधिक सामान्य कोड है, तो आप क्या अनुरोध किया है क्योंकि आप देख सकते हैं कि स्ट्रिंग पारित एक से अधिक पात्रों में से सीमांकक के साथ समाप्त होता एक कोड का उपयोग कॉल करने के लिए।

+0

अन्य सुझाए गए कोड +1 – Michael

+0

से क्लीनर हाँ साफ कोड हमेशा जरूरी है। पढ़ने के लिए बेहतर मतलब है समझने के लिए बेहतर, परीक्षण करने के लिए बेहतर, विकसित करने के लिए आसान है। –

+0

यह बहुत अच्छा है। बहुत बहुत धन्यवाद दोस्तों! – Bryce

3

यदि आपका सीमांकक केवल एक वर्ण लंबा, आप एक List में सीमांकक संग्रहीत कर सकती है तो जाँच लें कि String का अंतिम वर्ण इस सूची में है:

List<Character> delimiters = new ArrayList<Character>(); 
delimiters.add('.'); 
delimiters.add('!'); 
delimiters.add('?'); 

if(delimiters.contains(word.charAt(word.length() - 1))){ 

    sentenceCount++; 
} 
संबंधित मुद्दे

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