2012-05-04 16 views
11

नीचे दिए गए फ़ंक्शन को साझािकरण, वजन और ऊंचाई से दो मान प्राप्त होते हैं, और मैं इन्हें बीएमआई, की गणना करने के लिए उपयोग करता हूं, जब मैं मानों की सामग्री मुद्रित करता हूं तो मुझे साझा किए गए मानों को साझा किया जाता है जो मैंने साझाprefs (जो अच्छा है) में दर्ज किया है लेकिन फिर जब मैं उन पर एक विभाजन संचालन चलाता हूं, तो मुझे हमेशा परिणामस्वरूप 0 मिलता है .. त्रुटि कहां है?जावा में डिवीजन हमेशा शून्य (0) में परिणाम देता है?

public int computeBMI(){ 
    SharedPreferences customSharedPreference = getSharedPreferences(
      "myCustomSharedPrefs", Activity.MODE_PRIVATE); 

    String Height = customSharedPreference.getString("heightpref", ""); 
    String Weight = customSharedPreference.getString("weightpref", ""); 

    int weight = Integer.parseInt(Weight); 
    int height = Integer.parseInt(Height); 
    Toast.makeText(CalculationsActivity.this, Height+" "+ Weight , Toast.LENGTH_LONG).show(); 

    int bmi = weight/(height*height); 
    return bmi; 

} 
+0

मिल जाएगा आप पूर्णांक विभाजन कर रहे हैं। इसे फ्लोटिंग पॉइंट बनाने के लिए 1.0 से गुणा करें। –

उत्तर

38

आप पूर्णांक विभाजन कर रहे हैं।

आपको एक ऑपरेंड को double पर डालना होगा।

12

आप एक पूर्णांक विभाजन कर रहे हैं, मानों को float पर डालें और परिवर्तनीय bmi के डेटाटाइप को float पर बदलें।

इस तरह:

float bmi = (float)weight/(float)(height*height); 

तुम भी float करने के लिए अपने विधि public int computeBMI() की वापसी प्रकार बदलना चाहिए।

मैं आपको this स्टैक ओवरफ्लो प्रश्न पढ़ने की सलाह देता हूं।

Here आपके पास जावा में आदिम डेटा प्रकार की पूरी सूची के साथ सूची है।

उम्मीद है कि यह मदद करता है!

+0

क्यों फ्लोट और डबल नहीं? – Ungeheuer

+0

आपकी आवश्यकताओं पर निर्भर करता है और उस मूल्य को संग्रहीत करते समय आपको किस प्रकार की सटीकता की आवश्यकता होती है @ जॉनीकोडर –

+0

लेकिन कुछ मामलों के लिए फ्लोट पर्याप्त हो सकता है –

1

क्योंकि bmi एक पूर्णांक है। या तो फ्लोटिंग पॉइंट नंबर के रूप में bmi या Weight, Height घोषित करें। जब आप किसी प्रभाग में पूर्णांक का उपयोग करते हैं, तो आपको पूर्णांक विभाजन मिल जाएगा। जब आप युगल/फ्लोट का उपयोग करते हैं, तो आपको फ्लोटिंग पॉइंट डिवीजन

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