2012-04-23 14 views
7
String mins = minsField.getText(); 

    int Mins; 
    try 
    { 
     Mins = Integer.parseInt(mins); 

    } 
    catch (NumberFormatException e) 
    { 
     Mins = 0; 
    } 

    double hours = Mins/60; 

    hours.setText(hoursminsfield); 

समस्या यह है कि Double cannot be dereferencedडबल को संदर्भित नहीं किया जा सकता है?

+0

यह क्या भाषा है पाने के लिए ऊपर बयान का उपयोग के बारे में? जावास्क्रिप्ट? –

+0

ये आदमी उसका जावा –

+16

जावा! = जावास्क्रिप्ट –

उत्तर

14

संपादित 4/23/12

double cannot be dereferenced त्रुटि कुछ Java संकलन देना है जब आप एक आदिम पर एक विधि कॉल करने की कोशिश है। मुझे लगता है कि double has no such method अधिक सहायक होगा, लेकिन मुझे क्या पता चलेगा।

अपने कोड से, यह hours.setText (hoursminfield) करने से लगता है आपको लगता है कि आप hoursminfield में hours के पाठ प्रतिनिधित्व कॉपी कर सकते हैं; इसमें कुछ त्रुटियां हैं: 1) घंटे double है जो एक आदिम प्रकार है, ऐसे कोई तरीके नहीं हैं जिन्हें आप कॉल कर सकते हैं। यह आपको वह त्रुटि देता है जिसके बारे में आपने पूछा था। 2) आप यह नहीं कहते कि किस प्रकार का घंटा मिनट है, शायद आपने इसे अभी तक घोषित नहीं किया है। 3) किसी विधि के तर्क होने के कारण एक चर के मान को सेट करना असामान्य है। यह कभी-कभी होता है, लेकिन आम तौर पर नहीं।

कोड की पंक्तियों करना क्या आप चाहते हैं करने लगते हैं:

double hours = Mins/60; में आप दो int रों विभाजित कर रहे हैं:

String hoursrminfield; // you better declare any variable you are using 

// wrap hours in a Double, then use toString() on that Double 
hoursminfield = Double.valueOf(hours).toString(); 

// or else a different way to wrap in a double using the Double constructor: 
(new Double(hours)).toString(); 

// or else use the very helpful valueOf() method from the class String which will 
// create a string version of any primitive type: 
hoursminfield = String.valueOf(hours); 

मूल जवाब (अपने कोड में एक अलग समस्या को संबोधित किया)। आपको उस विभाजन के int मान मिलेगा, इसलिए यदि न्यूनतम = 43; डबल घंटे = न्यूनतम/60; // न्यूनतम/60 एक int = 0. है जो इसे दो घंटे तक असाइन करता है // घंटे शून्य के बराबर होता है।

आपको क्या करने की जरूरत है:

double hours = Mins/((double) 60); 

या ऐसा ही कुछ है, तो आप double और नहीं int के साथ किया जा करने के लिए विभाजन के लिए मजबूर करने में एक double करने के लिए अपने विभाजन के कुछ हिस्से को कास्ट करने की जरूरत है रों।

+0

धन्यवाद ढेर ब्रो, भयानक काम करता है: डी <3 –

+0

मैं एक और समस्या डाल रहा हूं, अगर आप मुझे कुछ सलाह देने के लिए बहुत बढ़िया होंगे, तो बहुत सराहना की जाएगी। –

+1

यह बहुत अच्छा है, एक स्वीकार्य उत्तर जो सही है, और मैं डाउनवॉटेड हो रहा हूं! हो सकता है कि आप में से एक बिजली उपयोगकर्ताओं को डाउनवॉटिंग मुझे बता सके क्यों। – mwengler

2

आपने भाषा निर्दिष्ट नहीं की है, लेकिन यदि यह जावा है, तो मूल प्रकार double और कक्षा Double के बीच एक बड़ा अंतर है।

किसी भी मामले में, आपके setText के आसपास गलत तरीका लगता है। setText विधि डेटा क्षेत्र से संबंध रखते हैं हैं, नहीं डेटा आप कोशिश कर रहे हैं में डाल करने के लिए:

hoursminsfield.setText (hours); 

दूसरे शब्दों में, आप क्षेत्र के पाठ का उपयोग करते हुए डबल तुम सिर्फ सेट करना चाहते हैं गणना की। चाहे आप एक डबल पास कर सकें, एक अलग मामला है जो की जांच की आवश्यकता है।

एक और बात:

double hours = Mins/60; 

, अगर Mins एक integer` है, तो आप एक पूर्णांक मूल्य है जो आप तो एक डबल में डाल देंगे। इसका मतलब है कि इसे छोटा कर दिया जाएगा। क्या आप सटीक विभाजन निम्नलिखित रहें, यह सुनिश्चित करना चाहते हैं, आप की तरह कुछ का उपयोग कर सकते हैं:

double hours = (double) Mins/60.0; 

(हालांकि यह उन परिवर्तनों का केवल एक साथ काम कर सकते हैं, मैं सभी शर्तों स्पष्ट बनाने के लिए पसंद करते हैं)।

+0

हाँ इसका जावा मेरा बुरा है, लेकिन क्या आप मुझे बता सकते हैं कि मैं कैसे ठीक कर सकता हूं इस? कृप्या? लॉल –

+2

उम, उन्होंने किया। आप डबल पर 'सेटटेक्स्ट' को कॉल नहीं कर सकते क्योंकि एक डबल सिर्फ एक संख्या है। इसमें 'setText' विधि नहीं है क्योंकि इसमें कोई टेक्स्ट नहीं है ... –

+0

आह ठीक है, मैं आपको प्राप्त कर सकता हूं, क्या आप सुझाव दे सकते हैं कि मैं क्या कर सकता हूं? इस पर बहुत नया कारण है और मुझे पता नहीं है कि –

0

कैसे इस तरह से

double hours = Mins/60.0 

मैं हमेशा डबल मूल्य

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