PDA

View Full Version : استفاده از sوm در edittext و تشخیص ثانیه و دقیقه



amint70
جمعه 04 دی 1394, 19:58 عصر
سلام دوستان یه کدی احتیاج دارم که مثلا طرف بنویسه 3m24s عدد سه رو در یه textview بنام دقیقه و عدد 24 رو در textview ثانیه ذخیره کنه
ممنون
راستی ممکنه هر کدوم از عددها مثبت یا منفی باشن
یه چیزدیگه هم که میخوام اینه که اگه طرف m رو ننوشت خودش تشخیص بده که اون عدد دقیقه هست مثلا
3+45s
4-25s-
یا اگه کلا کدی باشه که این دو عدد بالارو برای تو دوتا textview نشون بده مشکلم حل میشه
ممنون

amint70
شنبه 05 دی 1394, 02:26 صبح
سلام یه توضیح دیگه بدم
کدی میخوام که
4-25s-
رو بگیره منفی چار رو در m و منفی بیست پنج رو در s ذخیره کنه
ممنون

msroid
شنبه 05 دی 1394, 11:33 صبح
سلام
اول فرمت کلی رو مشخص کن تا بعد برسیم سر جواب دادن مثلا اول گفتی میتونه اینجوری باشه
3m24s بعد تو مثال گفتی 3+45s. آیا همیشه m و s رو کاربر مینویسه...؟؟!! آیا همیشه + یا - همراه عدد هست یا مثلا اگه +4 باشه دیگه کاربر فقط مینویسه 4...؟؟

یا کلا چرا دو تا EditText نمیذاری که کاربر تو هر کدوم عدد مربوطه رو وارد کنه که دیگه نیازی به این کارا نباشه...؟؟

amint70
شنبه 05 دی 1394, 12:09 عصر
سلام ممنون که توجه کردین
فرم کلیش اینجوری باشه
4-25s-
ینی برای چهار m رو نمیخوام بنویسه ینی اون عددی که حرفی کنارش نیست تو یه string باشه حالا طرف شاید مثبتش یادش بره اون عددی رو که s داره هم تو یه string دیگه
هر کدوم از عددا ممکنه مثبت یا منفی باشن

msroid
شنبه 05 دی 1394, 12:56 عصر
سلام ممنون که توجه کردین
فرم کلیش اینجوری باشه
4-25s-
ینی برای چهار m رو نمیخوام بنویسه ینی اون عددی که حرفی کنارش نیست تو یه string باشه حالا طرف شاید مثبتش یادش بره اون عددی رو که s داره هم تو یه string دیگه
هر کدوم از عددا ممکنه مثبت یا منفی باشن

الان فکر کن من کاربر هستم و این مقدار رو وارد میکنم:
45s
خب الان باید از این چی برداشت بشه...؟؟ منظورم من 4 دقیقه و 5 ثانیه بوده و چون هر دو مثبت بودن دیگه علامت هم نذاشتم...!! اینجوری هم کار خودت سختره و هم کاربر ممکنه اشتباه بکنه. میشه یه فرم ثابت در نظر گرفت و به کاربر گفت دقیقا باید اینجوری وارد کنی و اگر تو این فرمت نبود ازش قبول نکنی مثلا بگی اگر ثانیه زیر 10 بود حتما باید قبلش یه 0 وارد کنی مثلا 05 اما بازم برای دقیقه به مشکل برمیخوری چون اگه کاربر وارد کنه 405s نمیدونی 40 دقیقه و 5 ثانیه بوده یا 4 دقیقه و 5 ثانیه البته تو توی قالب خودت اونو تفسیر میکنی و مقدار رو برمیگردونی اما در چنین مواردی کاربر حتما دچار اشتباه میشه و این کار اصلا توصیه نمیشه.

نگفتی چرا از دو تا EditText به جای یکی استفاده نمیکنی که خیلی سریع و راحت و بدون کوچکترین مشکل و اشتباه این کار انجام بشه...؟؟

amint70
شنبه 05 دی 1394, 13:10 عصر
سلام چون تعدادش زیاده نمیشه از دوتا edittext استفاده کرد
تو وارد کردن اعداد هم برای ثانیه حتما علامت بزاره کلا اعداد تو حالت های زیر باشه
4-5s
4+5s
4-5s-
4+5s-
4+5s+
4-5s+

msroid
شنبه 05 دی 1394, 15:57 عصر
فعلا من این راه حل به نظرم میرسه اما مطمعنا راه حل بهینه تر از این هم وجود داره:

String timeStr = "21-15s";
char[] arr = timeStr.toCharArray();
String min = "", sec = "";
boolean secState = false;
for (int i = arr.length - 1; i > -1; i--) {
if (arr[i] == 's') {
secState = true;
}else if(secState) {
if (arr[i] != '-' && arr[i] != '+'){
sec = arr[i] + sec;
}else {
sec = arr[i] + sec;
secState = false;
}
}else min = arr[i] + min;
}

amint70
شنبه 05 دی 1394, 22:29 عصر
آقا خیلی ممنون
کارم راه افتاد :تشویق:
تشکر ویژه از msroid (http://barnamenevis.org/member.php?370980-msroid) :تشویق: