2011-08-20 13 views
10
String[] letters = {"A", "B", "C", "D", "E", "F", "G", "H", "I", "L"}; 

Scanner inp = new Scanner(System.in); 
String input = (inp.nextLine()); 
String[] cord = input.split(""); 

for(int x = 0; x < 10; x++) 
    if(letters[x] == cord[1]) 
     System.out.println("Fk yeah!"); 

क्यों एफके हाँ! कभी नहीं होता अगर मैं ए-एल अक्षरों में से एक इनपुट करता हूं?स्ट्रिंग स्ट्रिंग के बराबर नहीं है?

+0

क्या आप वाकई 'कॉर्ड' वास्तव में केवल पत्र और कोई सफेद जगह नहीं हैं? –

+0

ऊपरी बनाम लोअरकेस भी हो सकता है – Jody

+0

हां, मुझे यकीन है कि 100%। नहीं, वे दोनों अपरकेस। –

उत्तर

22

स्ट्रिंग्स ऑब्जेक्ट्स हैं। == संदर्भ द्वारा वस्तुओं की तुलना करता है, न कि उनके आंतरिक मूल्य से।

  1. उपयोग String#equals() विधि के बजाय दो String वस्तुओं के मूल्य की तुलना करने के लिए:

    2 समाधान कर रहे हैं।

    if (letters[x].equals(cord[1])) 
    
  2. उपयोग char बजाय String। यह एक आदिम है, इसलिए == काम करेगा।

    char[] letters = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'L'}; 
    
    Scanner inp = new Scanner(System.in); 
    String input = (inp.nextLine()); 
    char[] cord = input.toCharArray(); 
    
    for (int x = 0; x < 10; x++) 
        if (letters[x] == cord[1]) 
         System.out.println("Fk yeah!"); 
    
+5

पवित्र गाय के बजाय आपके पास बहुत सारे बैज हैं –

+2

@ कोड: जॉन स्कीट की तुलना में यह कुछ भी नहीं है। – BalusC

+0

अच्छी तरह से किसी भी तरह से बधाई देता है :) मैं आपको धनुष देता हूं सर –

11

समानता के लिए तार की तुलना करने के लिए, == प्रयोग नहीं करते। == ऑपरेटर यह देखने के लिए जांच करता है कि दो ऑब्जेक्ट बिल्कुल वही ऑब्जेक्ट हैं या नहीं। दो तार अलग-अलग वस्तुएं हो सकती हैं, लेकिन समान मूल्य हो (उनमें बिल्कुल वही वर्ण हैं)। समानता के लिए तारों की तुलना करने के लिए .equals() विधि का उपयोग करें। इसी तरह, असमान तुलना के परीक्षण के लिए .compareTo() विधि का उपयोग करें। उदाहरण के लिए,

String s = "something", t = "maybe something else"; 
if (s == t)  // Legal, but usually WRONG. 
if (s.equals(t)) // RIGHT 
if (s > t) // ILLEGAL 
if (s.compareTo(t) > 0) // CORRECT> 
संबंधित मुद्दे