यह पता लगाना कि जावा में कोई संख्या डबल है या नहीं


92

मैं एक जावा नौसिखिया हूँ। मैं यह पता लगाने की कोशिश कर रहा हूं कि क्या कोई संख्या कुछ इस तरह से डबल है:

if ( typeof ( items.elementAt(1) )== Double ) {
       sum.add( i, items.elementAt(1));
}

सराहना करेंगे कि क्या कोई मुझे बता सकता है कि इस काम को ठीक से करने के लिए वाक्यविन्यास को कैसे पुनर्व्यवस्थित किया जाए।


क्या यह सिर्फ मेरे लिए है, या टाइपो (वस्तु) वास्तव में C # में वास्तविक नहीं है? मैंने हमेशा सोचा कि यह टाइपोफ़ (प्रकार) था ... object o = new object(); Type t = typeof(o);एक संकलक त्रुटि कहती है o is a variable but is used like a type। इस सवाल का नाम गुमराह करने वाला है ...
दान रेसन

सी # में, सभी वस्तुओं में एक Object#GetType()विधि होती है, जो एक रिटर्न देती है Type। तब के साथ तुलना करने के लिए इस्तेमाल किया जा सकता है typeof()। इस मामले में, यह होगा items.elementAt(1).GetType() == typeof(double)
फ्रंटियर

जवाबों:


154

इसे इस्तेमाल करे:

if (items.elementAt(1) instanceof Double) {
   sum.add( i, items.elementAt(1));
}

19
+1। मैं यह भी सोच रहा हूं कि आप वास्तव में जांच करना चाहते हैं elementAt(0); जावा में अधिकांश सामान शून्य-आधारित है।
ChssPly76

16

चूँकि यह Google का पहला प्रश्न है, इसलिए मैं typeofयहाँ जावास्क्रिप्ट शैली को भी जोड़ूँगा:

myObject.getClass().getName() // String

9

परावर्तन धीमा है, लेकिन एक स्थिति के लिए काम करता है जब आप जानना चाहते हैं कि क्या प्रकार का कुत्ता या बिल्ली है और पशु का उदाहरण नहीं है। तो आप ऐसा कुछ करेंगे:

if(null != items.elementAt(1) && items.elementAt(1).getClass().toString().equals("Cat"))
{
//do whatever with cat.. not any other instance of animal.. eg. hideClaws();
}

ऊपर दिए गए उत्तर को नहीं कहना काम नहीं करता है, इसके अलावा अशक्त जाँच भाग आवश्यक है।

जवाब देने का एक और तरीका है कि जेनेरिक का उपयोग करें और आपको किसी भी तत्व के रूप में डबल होने की गारंटी है।

List<Double> items = new ArrayList<Double>();

9
क्या आप कृपया नकारात्मक रेटिंग के कारणों को जानना सीख सकते हैं? मैं जावा में भी नया हूं और मैं यह देखना चाहता हूं कि इस उत्तर में क्या गलत है इसलिए मुझे इसे आजमाने की जरूरत नहीं है!
enrey

1
मैं एक हार्ड कोडित स्ट्रिंग की तुलना करने से बचता हूं, यदि कक्षा का नाम बदल जाता है, तो भी इसका उदाहरण मौजूद है इसलिए हम इसका उपयोग करते हैं।

@ जेन ने इस ओवरऑफ का क्या फायदा उठाया?
चार्ल्स शिलर

@CharlesShiller फायदा "स्ट्रिंग" स्ट्रिंग के देर से बंधन है।
रॉबिनो

2
+1 के लिए .getClass().toString()क्योंकि मैं एक तरह से निर्भरता के कारण कक्षा का आयात नहीं कर सकता। धन्यवाद।
हनीस

1

इस कार्य को प्राप्त करने के लिए नियमित अभिव्यक्ति का उपयोग करें। कृपया नीचे दिया गया कोड देखें।

public static void main(String[] args) {
    try {

        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        System.out.print("Enter your content: ");
        String data = reader.readLine();            
        boolean b1 = Pattern.matches("^\\d+$", data);
        boolean b2 = Pattern.matches("[0-9a-zA-Z([+-]?\\d*\\.+\\d*)]*", data); 
        boolean b3 = Pattern.matches("^([+-]?\\d*\\.+\\d*)$", data);
        if(b1) {
            System.out.println("It is integer.");
        } else if(b2) {
            System.out.println("It is String. ");
        } else if(b3) {
            System.out.println("It is Float. ");
        }           
    } catch (IOException ex) {
        Logger.getLogger(TypeOF.class.getName()).log(Level.SEVERE, null, ex);
    }
}

1
महान उदाहरण, 'टाइपोफ़' बीडब्ल्यूटी क्या है? अंतिम पंक्ति में।
ईडी कुमार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.