2012-04-21 17 views
11

मेरे पास एक तरीका है जो बहुत सारी जांच और गणना करता है और एक कस्टम क्लास, रिटर्न मैसेज देता है। वापसी मैसेज में 2 बूलियन और एक स्ट्रिंग है। मैं जो करना चाहता हूं वह इस विधि को मेरी मुख्य कक्षा से थोड़ी देर के लूप में चलाता है और आखिरी बार लूप समाप्त होने के बाद रिटर्न मैसेज ऑब्जेक्ट तक पहुंच प्राप्त करता है।जावा में वैरिएबल असाइन करें जबकि-लूप सशर्त?

PHP में इस बात का

while ($returned = myObject->myMethod()->finished) 
{ 

} 

if($returned -> finished == FALSE) 
{ 
... 
} 

हालांकि इस तरह मुझे जावा में एक बूलियन उम्मीद त्रुटि देता असाइन करने की कोशिश एक मामला होगा (वहाँ ऊपर में php त्रुटियों हो सकता है, यह देर हो चुकी है: डी)

+0

यहां PHP और जावा के बीच का अंतर यह है कि जावा में 'while' * की आवश्यकता होती है * एक बूलियन-टाइप की गई अभिव्यक्ति (' someVar = boolExpr' स्वयं एक बूलियन-टाइप अभिव्यक्ति है)। यदि आवंटित चर 'बूल' था तो यह समान होगा। कृपया * वर्तमान * जावा कोड दिखाएं क्योंकि ऐसा लगता है कि गैर-बूल का कुछ असाइन किया जा रहा है। किसी भी मामले में, कुछ अपवादों के साथ, मैं इस idiom का उपयोग * नहीं * की सिफारिश करेंगे ... –

उत्तर

27

हम अपने कोड के और अधिक देखने की जरूरत है, लेकिन एक छोटे से अनुमान लगा मुझे लगता है कि कुछ इस तरह काम करेगा:

ReturnMessage returned; 
while (!(returned = myObject.myMethod()).finished) { 

} 
if (!returned.finished) { 

} 
1

यह इतना

while((returned=myObject.myMethod()).isFinished()){ 

} 

या अधिक सटीक (returned=myObject.myMethod()) होने के लिए प्रदान करती है वस्तु returned में लौट आए और आप एक सामान्य की तरह उपयोग कर सकते हैं की तरह संभव है वर

2

जबकि PHP में स्वीकार्य, मुझे लगता है (मैं PHP में कोड नहीं करते हैं), जावा में एक सशर्त के भीतर असाइनमेंट करने के लिए इसे बेहद खराब रूप माना जाता है। (ऐसा इसलिए है क्योंकि यह त्रुटि प्रवण है और बहुत मुश्किल है, अंतर बहुत सारे कोड के बीच में = और == के बीच होता है। यह सी और सी ++ के अनुभव के वर्षों के आधार पर एक जानबूझकर विकल्प था।)

जैसा कि है, मैं आपके कोड का काफी पालन नहीं कर सकता। आप कहते हैं "रिटर्न मैसेज में 2 बूलियन और स्ट्रिंग हैं" लेकिन परीक्षण, जैसा कि मैं इसे PHP में समझता हूं, myObject->myMethod()->finished != null और returnedfinished के मान पर सेट हो जाता है, लेकिन फिर आप पर myObject->myMethod()->finished->finished के समान होते हैं और परीक्षण करते हैं। क्षमा करें अगर मैं PHP वाक्यविन्यास गलत समझता हूं।

जावा में सामान्य सिफारिश की तर्ज पर अधिक होगा:

ReturnMessage returned = myObject.myMethod().getFinished(); 
while (returned != null) { 

    ... 

    returned = myObject.myMethod().getFinished(); // or did you mean myObject.myMethod(); 
} 

if (!returned.finished) { // or, better: if (!returned.isFinished()) 
    ... 
} 

अगर मैं पीएचपी गलत समझा, मुझे पता है और मैं जावा कोड मैच के लिए ठीक कर देंगे।

+0

यह कभी भी लूप दर्ज नहीं करेगा। – Highstead

+0

@ हाइस्टेड: फिक्स्ड। –

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