2012-09-21 12 views
6

मैं अपने एपी कंप्यूटर साइंस क्लास में ग्रिडवर्ल्ड का उपयोग कर रहा हूं, और हम जो कुछ भी कर रहे हैं उसका हिस्सा बग (ऑब्जेक्ट) का रंग बदल रहा है। मुझे ऐसा करने का एक बहुत ही बुनियादी तरीका मिला है लेकिन आरजीबी के लिए संख्या मूल्यों को रखने के बजाय उपयोगकर्ता को उस रंग में टाइप करने की अनुमति देने के लिए तारों को शामिल करने की कोशिश कर रहा हूं। मैं स्ट्रिंग वैल्यू को उस रंग के रूप में प्राप्त करने में सक्षम हूं जो मैं चाहता हूं, "लाल" टाइप करके और स्ट्रिंग स्टोर रखकर। लेकिन रंग में अनुवाद करने के लिए मैं उस स्ट्रिंग को कैसे प्राप्त करूं? मुझे सच में यकीन नहीं है कि अगर मैंने इसे स्पष्ट रूप से पर्याप्त कहा है लेकिन मैंने अपना कोड संलग्न किया है तो उम्मीद है कि कोई समझ जाएगा और मदद कर सकता है।किसी ऑब्जेक्ट का रंग सेट करना

Color red = new Color (255, 0, 0); 
Color green = new Color (0, 255, 0); 
Color blue = new Color (0, 0, 255); 

System.out.println("What color would you like the first bug to be? (red, green, blue)"); 
String name = "color1"; 
String color1 = keyboard.next(); 

if (color1 == "red") 
{ 
    world.add (new Location (bugx1, bugy1), new Bug(red)); 
} 
if (color1 == "blue") 
{ 
    world.add (new Location (bugx1, bugy1), new Bug(blue)); 
} 
if (color1 == "green") 
{ 
    world.add (new Location (bugx1, bugy1), new Bug(green)); 
} 

उत्तर

5

इस पुराने शाहबलूत ...

जब जावा में स्ट्रिंग्स की तुलना, आप .equals() उपयोग करना चाहिए। == ऑपरेटर केवल तभी सत्य है जब दोनों ऑपरेंड एक ही सटीक वस्तु हैं। इस प्रयास करें:

if (color1.equals("red")) 

यह एक आम "गलती" जावास्क्रिप्ट, जहां == ऑपरेटर के रूप में आप इसे कोड किया है काम करेंगे से परिचित प्रोग्रामर द्वारा बनाई गई है। आईएमएचओ, "गलती" वास्तव में जावा भाषा विनिर्देशन में है - उन्हें == को equals() निष्पादित करने की अनुमति देनी चाहिए और पहचान तुलना के लिए === का उपयोग करना चाहिए (जिसे शायद ही कभी उपयोग किया जाता है)।


ठीक से ऐसा करने के लिए, मैं रंग के लिए एक enum उपयोग करना चाहिये।

public enum BugColor { 
    red(255, 0, 0), 
    green(0, 255, 0), 
    blue(0, 0, 255); 

    private final Color color; 

    BugColor(int r, int g, int b) { 
     color = new Color(r, g, b); 
    } 

    public Color getColor() { 
     return color; 
    } 
} 

तो बस: फिर अपने कोड सिर्फ एक लाइन होगा

String color1 = keyboard.next(); 
world.add (new Location (bugx1, bugy1), new Bug(BugColor.valueOf(color1).getColor())); 

तो Color एक इंटरफेस है, तो आप को सरल बनाने और enum BugColor extends Color बनाकर अपने कोड में सुधार कर सकते हैं - मैं हूँ कार्यान्वयन को आपके लिए एक अभ्यास के रूप में छोड़ दें।

+0

+1 enum के उपयोग के लिए +1, लेकिन @OP, enums एपीसीएस पाठ्यक्रम में शामिल नहीं हैं, इसलिए अपने शिक्षक के लिए उनके उपयोग के बारे में पूछने के लिए तैयार रहें। – Vulcan

+0

सुनिश्चित नहीं है कि "enum" क्या है लेकिन इन उद्देश्यों के लिए .equals() एक आकर्षण की तरह काम किया। धन्यवाद! –

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