जवाबों:
if (c == ' ')
char
एक आदिम डेटा प्रकार है, इसलिए इसके साथ तुलना की जा सकती है ==
।
इसके अलावा, दोहरे उद्धरण चिह्नों का उपयोग करके आप String
निरंतर ( " "
) बनाते हैं , जबकि एकल उद्धरणों के साथ यह एक char
स्थिर ( ' '
) है।
आपको जिस कोड की आवश्यकता होती है, वह इस बात पर निर्भर करता है कि "खाली जगह" से आपका क्या मतलब है।
यदि आपका मतलब ASCII / लैटिन -1 / यूनिकोड अंतरिक्ष चरित्र (0x20) उर्फ SP है, तो:
if (ch == ' ') {
// ...
}
यदि आपका मतलब पारंपरिक ASCII व्हाट्सएप पात्रों (SP, HT, VT, CR, NL) से है, तो:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
यदि आपका मतलब किसी भी यूनिकोड व्हाट्सएप चरित्र से है, तो:
if (Character.isWhitespace(ch)) {
// ...
}
ध्यान दें कि यूनिकोड व्हाट्सएप में अतिरिक्त ASCII नियंत्रण कोड और उच्च कोड विमानों में कुछ अन्य यूनिकोड वर्ण शामिल हैं; के लिए javadoc देखें Character.isWhitespace(char)
।
आपने जो लिखा वह यह था:
if (Equals(ch, " ")) {
// ...
}
यह कई स्तरों पर गलत है। सबसे पहले, जिस तरह से जावा कंपाइलर यह व्याख्या करने की कोशिश करता है कि हस्ताक्षर के साथ एक विधि के लिए एक कॉल के रूप में है boolean Equals(char, String)
।
Equals
वैसे भी आमतौर पर एक विधि का नाम नहीं होगा। जावा कन्वेंशन यह है कि विधि नाम कम केस लेटर से शुरू होते हैं।char
और String
तुलना नहीं कर रहे हैं और एक आम आधार प्रकार में ढाला नहीं जा सकता है।जावा में एक तुलनित्र के रूप में ऐसी कोई चीज है, लेकिन यह एक इंटरफ़ेस है न कि एक विधि, और इसे इस तरह घोषित किया जाता है:
public interface Comparator<T> {
public int compare(T v1, T v2);
}
दूसरे शब्दों में, विधि का नाम compare
(नहीं Equals
) है, यह एक पूर्णांक (बूलियन नहीं ) लौटाता है, और यह दो मानों की तुलना करता है जिन्हें टाइप पैरामीटर द्वारा दिए गए प्रकार में पदोन्नत किया जा सकता है।
किसी (हटाए गए उत्तर में!) ने कहा कि उन्होंने यह कोशिश की:
if (c == " ")
यह दो कारणों से विफल होता है:
" "
एक स्ट्रिंग शाब्दिक है और एक चरित्र शाब्दिक नहीं है, और जावा सीधे String
और char
मूल्यों की तुलना करने की अनुमति नहीं देता है।
आपको स्ट्रिंग्स या स्ट्रिंग शाब्दिक का उपयोग करके तुलना नहीं करनी चाहिए ==
। ==
एक संदर्भ प्रकार पर ऑपरेटर वस्तु पहचान, नहीं वस्तु मूल्य तुलना करती है। के मामले में String
यह अलग पहचान और एक ही मूल्य के साथ विभिन्न वस्तुओं के लिए आम है। एक ==
परीक्षण अक्सर गलत उत्तर देगा ... इस दृष्टिकोण से कि आप यहां क्या करने की कोशिश कर रहे हैं।
आप उपयोग कर सकते हैं
Character.isWhitespace(c)
या वर्ण वर्ग में उपलब्ध अन्य विधियों में से कोई भी।
if (c == ' ')
भी काम करता है।
मेरा सुझाव होगा:
if (c == ' ')
इस मामले में, आप स्ट्रिंग तुलनात्मक फ़ंक्शन के बारे में सोच रहे हैं "String".equals("some_text")
। चार्ट को इस फ़ंक्शन का उपयोग करने की आवश्यकता नहीं है। इसके बजाय एक मानक ==
तुलना ऑपरेटर पर्याप्त होगा।
private static int countNumChars(String s) {
for(char c : s.toCharArray()){
if (c == ' ') // your resulting outcome
}
}
पहली नज़र में, आपका कोड संकलित नहीं होगा। चूंकि नेस्टेड है अगर स्टेटमेंट में कोई ब्रेसिज़ नहीं है, तो यह अगली पंक्ति के कोड पर विचार करेगा जिसे इसे निष्पादित करना चाहिए। इसके अलावा, आप एक स्ट्रिंग के खिलाफ एक चर की तुलना कर रहे हैं, ""। मानों की तुलना चार्ट के रूप में करने का प्रयास करें। मुझे लगता है कि सही सिंटैक्स होगा:
if(c == ' '){
//do something here
}
लेकिन फिर, मैं "Equal"
कक्षा से परिचित नहीं हूं
तुम कोशिश कर सकते हो:
if(Character.isSpaceChar(ch))
{
// Do something...
}
या:
if((int) ch) == 32)
{
// Do something...
}
तुलना करने के लिए Strings
आपको बराबर कीवर्ड का उपयोग करना होगा ।
if(c.equals(""))
{
}
equals
जावा में कोई कीवर्ड नहीं है । यह एक पहचानकर्ता है। 3) चूंकि c
एक char
(आदिम प्रकार !!) है, आप कॉल नहीं कर सकते c.equals(...)
। 4) यदि आप कर सकते हैं, तो भी कोई char
मूल्य नहीं है जो नक्शे में है ""
। उत्तरार्द्ध का अर्थ है "इसमें कोई वर्ण नहीं" वाला स्ट्रिंग। यह एक चरित्र से मेल नहीं खा सकता है।
' '
कोई सामग्री नहीं है?