गृहकार्य: रॉक पेपर कैंची खेल। - कंप्यूटर या मानवस्ट्रिंग को एनम वैल्यू से तुलना करने का सही तरीका क्या है?
enum Gesture{ROCK,PAPER,SCISSORS};
जहाँ से मैं तय करने के लिए जो जीतता है मानों की तुलना करना चाहते हैं:
मैं एक गणन बना लिया है। मूल्यों को सेट करना ठीक काम करता है, और तुलना ठीक से काम करती है (पेपर कवर रॉक, रॉक क्रश कैंची, कैंची पेपर कटौती)। हालांकि, मैं काम करने के लिए अपनी टाई नहीं मिल सकता है। किसी भी समय टाई होने पर उपयोगकर्ता को विजेता घोषित किया जाता है।
आह ... बकवास ... यह स्पष्ट होगा: userPick
मूल्यों rock
, paper
, या scissors
के साथ एक String
है। userPick
से computerPick
की तुलना करने के लिए मैं ==
का उपयोग करने में असमर्थ हूं, जैसा कि आप नीचे देख सकते हैं, को enum
से Gesture
टाइप किया गया है।
if(computer == 1)
computerPick = Gesture.ROCK;
else
if(computer == 2)
computerPick = Gesture.PAPER;
else
computerPick = Gesture.SCISSORS;
if(userPick.equals(computerPick))
{
msg = "tie";
++tieGames;
}
etc....
मैं अनुमान लगा रहा हूँ वहाँ rock
ROCK
के बराबर नहीं किया जा रहा है, या क्योंकि बाद एक String
नहीं है String userPick
नहीं Gesture computerPick
मिलान करने में सक्षम होने के साथ एक मुद्दा है कि। हालांकि, मैं अपनी पाठ्यपुस्तक या ओरेकल के जावा ट्यूटोरियल में एक समान परिस्थिति का उदाहरण नहीं ढूंढ पा रहा हूं, इसलिए मुझे यकीन नहीं है कि समस्या को कैसे ठीक किया जाए ...
कोई संकेत?
आप सही हैं, तो आप enum Gesture.ROCK को स्ट्रिंग "रॉक" तुलना नहीं कर सकते। आपको किसी प्रकार की स्ट्रिंग की आवश्यकता होगी -> इशारा मैपिंग फ़ंक्शन ताकि आप दो enums की तुलना कर सकें। सौभाग्य से, जावा पहले से ही एक प्रदान करता है। 'Gesture.valueOf ([your_string])' आज़माएं। अगर मुझे सही याद है, तो यह कार्य केस संवेदनशील है। लेकिन मुझसे गलती हो सकती है। –
वह फ़ंक्शन केस संवेदनशील है। धन्यवाद! –