ورود

View Full Version : مشکل این کد کجاست ؟



mehdi.safavie
دوشنبه 20 مهر 1394, 09:03 صبح
@Override
public void onClick(View v) {


String data = null,new_item= null, text_message = "2.1,2.3,2.2";
//Change codesms to textsms
data = text_message;
text_message = null;
for (int x=0 ; x < data.length() - 1 ; x += 4)
{
new_item = data.substring(x, 3);
if (new_item.contains("2.1"))
{
text_message += "a";
}
if (new_item.contains("2.2"))
{
text_message += "b";
}
}
//end change
Toast toster = Toast.makeText(this,tost,Toast.LENGTH_LONG);
toster.show();
}


در ضمن یه مشکل دیگه هم دارم
از تابع switch استفاده کردم ولی به مقدار داخل پرانتز switch گیر میده ! چرا ؟

switch ("String variable")
{
case "mytext1":

break;
case "mytext2":
break;
}


پیغام خطاش هم اینه :
Error:(93, 25) error: strings in switch are not supported in -source 1.6
(use -source 7 or higher to enable strings in switch)

mehdi.safavie
دوشنبه 20 مهر 1394, 09:16 صبح
مشکل دوم رو فهمیدم چی جست و جو کنم پیدا کردم !
والا هنوز نفهمیدم چه دلیلی داشت این کار یا این جور کار ها !

ولی جست و جو کردم how i can change source 1.6 تو سایت stackoverflow جواب بود کلید های Alt+Ctrl+Shift+S رو بگیر ، سمت چپ تو قسمت app تب اول Peropertis گزینه های Source Compability و Target Compability رو تغییر بده .

بعد همین دستور switch رو دوباره نوشتم دیگه این گیر رو نداد .

ولی سر سوال اولم ، دیگه نمیفهمم موضوع چیه ، پیغام خطا نمیده فقط از برنامه میندازه بیرون .

hosseinaryai
دوشنبه 20 مهر 1394, 11:04 صبح
دوست عزیز ، کد شما باید بصورت زیر تغییر پیدا کنه :

زمانی که شما از substring استفاده می کنین ، ورودی دوم میزان پرش نیست ، پوزیشن حرف بعدی شماست .. یعنی الزامن ورودی دوم همیشه باید از ورودی اول بزرگتر باشه..
پس کد بالا باید به صورت زیر نوشته شه :



String data = null,new_item= null, text_message = "2.1,2.3,2.2"; //Change codesms to textsms
data = text_message;
text_message = null;
int row = 3;


for (int x=0 ; x < data.length() - 1 ; x += 4)
{
new_item = data.substring(x, row);

if (new_item.contains("2.1"))
{
text_message += "a";
}
if (new_item.contains("2.2"))
{
text_message += "b";
}
row +=4;


}
//end change
Toast toster = Toast.makeText(this,tost,Toast.LENGTH_LONG);
toster.show();






ضمنن بهتر بود text_message رو بصورت آرایه ای از string تعریف می کردین که دیگه لزومی هم به این همه دردسر نداشت ..

mehdi.safavie
دوشنبه 20 مهر 1394, 20:12 عصر
متشکر و ممنون !

مقداری که وارد متغییر text_message میشه به صورت اس ام اس میاد . یه همچین چیزی میاد :
message message message
ID:6941
178<09119999999
1724/2.1,5.3,2.2,2.2,7.4,9.4,0.0,2.1,2.1,2.2,0.0,2.1,2. 3
message message message

بعد من رشته های قسمت 09119999999 و اون متن 2.1و5.3 ... رو جدا میکنم میریزم تو دو تا متغییر رشته ای دیگه .

حالا منظور شما از این که text_message رو به صورت آرایه ای میگرفتم دردسرم کمتر بود چه الگوریتمیه ؟

hosseinaryai
دوشنبه 20 مهر 1394, 20:30 عصر
اومممم .. خب نفهمیدم چطور داری اس ام اسو دریافت می کنی .. اس ام اسو معمولن توی BroadcastReceiver میگیرن که اونم onClick نمی خوره معمولن ..
در هر صورت .. برای تبدیل text_message به آرایه به این صورت عمل کنین :

text_message = "2.1,2.3,2.2";
String[] ssss = text_message.split(",");

حالا به عنوان مثال آرایه ی ssss[2] شما میشه : 2.2