آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

مشکل عجیب مقایسه دو رشته ( حل شده )

Esmaily  11 سال پیش  11 سال پیش
0 0

با سلام

ماجرا از این قراره که من یک رشته متنی فرستاده شده از طریق بلوتوث رو در یک متغییر String ذخیره میکنم و حتی در LogCat نمایش میدم ولی هرکاری میکنم که این رشته رو با رشته مشابهش در متغییر دوم مقایسه کنم همیشه نتیجه مقایسه false میشه با وجود اینکه از هر دو متغییر در LogCat پرینت میگیرم و هر دو مقدار یکسانی رو نشون میدن

برای اطمینان از کارکرد صحیح ADT متغییر سومی هم اضافه کردم که مقدارش رو دستی مشابه دو متغییر بالا مقدار دهی میکنم ولی در این حالت مقایسه دو عبارت رشته ای مقدار صحیحی رو برمیگردونه و فقط مشکل من با اون متغییر رشته ایه که عبارت خوانده شده از ارتباط بلوتوث داخلش ریخته میشه

حدس خودم اینه یه کاراکتری چیزی اضافه بر کاراکترهای قابل نمایش هم در ارتباط بلوتوث فرستاده و در متغییر مشکل دار ریخته میشه که معادل اسکی قابل دیدن نداره ولی باعث میشه نتیجه مقایسه رشته ها رو بهم بریزه

از دیشب تا الان یه سره بیدارم ولی نتونستم حلش کنم دوستان کسی چیزی به ذهنش نمیرسه ؟

inputStream = mBTSocket.getInputStream();
while (!bStop) { byte[] buffer = new byte[256]; if (inputStream.available() > 0) { inputStream.read(buffer); int i = 0; for (i = 0; i < buffer.length && buffer[i] != 0; i++) { } final String strInput = new String(buffer, 0, i); String String00 = new String(strInput); String String01 = new String("LED Off !"); String String02 = new String("LED Off !"); Log.e("VV", "String00:" + String00 ); Log.e("VV", "String01:" + String01 ); Log.e("VV", "String02:" + String02 ); if(String02==String01){ Log.i("VV","True"); } if(String02.equals(String01)){ Log.i("VV","True 02 01"); } if(String00.equals(String01)){ Log.i("VV","True 00 01"); } else{ Log.i("VV","False 00 01:" + String00); }

 

0 0
سلام میشه کد اتصال بلوتوث را به ما بدین؟ (11 سال پیش)
 برای این سوال 2 پاسخ وجود دارد.
پاسخ به سوال 
سجاد زهره ای  11 سال پیش
+3 0

دوست عزیز از کد زیر جهت مقایسه استفاده کن و نتیجه رو اعلام کن

 	   String text1="sajad";
String text2="sajad";

if(text1.equals(text2))
{

}
0 0
سلام ممنون از پاسختون ، منم از همین روش در کد بالا استفاده کردم برای دو متغییری که خودم بهشون مقدار میدم درسته ولی برای اونی که از بلوتوث میگیرم با اونی که خودم مقدار میدم با اینکه در خروجی مقدار یکسانی رو نشون میدن نتیجه نادرست میزنه !( حتی از == هم برای آزمایش استفاده کردم که کلا در هر حالتی نا صحیح بود ) (11 سال پیش)
0 0
اگه داری اطلاعاتو درست میگیری یبارم از swich استفاده کن ببین جواب میده (11 سال پیش)
0 0
توی عکسی که ضمیمه کردم در LogCat ببینید مقدار هر سه متغییر String00 Strin01 String02 که چاپ شده یکسانه ولی نتیجه مقایسه در خطوط پایینترش نادرست میشه ، switch هم همین آش و همین کاسست ، خیلی عجیبه! (11 سال پیش)
پاسخ به سوال 
Mseif  11 سال پیش
+3 0

به این صورت انجام بدین مشکلتون حل میشه : 

if(text1.trim().equals(text2)){
//code
}
0 0
دستت درد نکنه مهندس ، ردیف شد! (11 سال پیش)
+2 0
لطفا برای تشکر روی علامت Like کلیک کنید و زمانی که به جواب رسیدید یک حل شده به صورت سوالتون اضافه کنید.ممنون (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .