উত্তর:
if (c == ' ')
char
এটি একটি আদিম ডাটা টাইপ, তাই এটির সাথে তুলনা করা যায় ==
।
এছাড়াও, ডাবল উদ্ধৃতি ব্যবহার করে আপনি String
ধ্রুবক ( " "
) তৈরি করেন , যখন একক উদ্ধৃতি সহ এটি একটি char
ধ্রুবক ( ' '
) থাকে।
আপনার প্রয়োজনীয় কোডটি "খালি স্থান" বলতে কী বোঝায় তার উপর নির্ভর করে।
আপনি যদি ASCII / লাতিন -1 / ইউনিকোড স্পেস অক্ষর (0x20) ওরফে এসপি বলতে চান তবে:
if (ch == ' ') {
// ...
}
আপনি যদি কোনও theতিহ্যবাহী ASCII সাদা স্থানের অক্ষর (এসপি, এইচটি, ভিটি, সিআর, এনএল) বোঝাতে চান তবে:
if (ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n' || ch == '\x0b') {
// ...
}
আপনি যদি কোনও ইউনিকোড শ্বেতস্থান চরিত্রটি বোঝাতে চান তবে:
if (Character.isWhitespace(ch)) {
// ...
}
নোট করুন যে ইউনিকোড হোয়াইটস্পেসে অতিরিক্ত এএসসিআইআই নিয়ন্ত্রণ কোড এবং উচ্চতর কোড প্লেনে কিছু অন্যান্য ইউনিকোড অক্ষর রয়েছে; জন্য 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
মান আছে যে মান আছে ""
। পরেরটির অর্থ "এর মধ্যে কোনও অক্ষর নেই" এমন একটি স্ট্রিং। এটি কোনও চরিত্রের সাথে মেলে না।
' '
কোন সামগ্রী নেই?