انجمن سایت کلیدستان



مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندرویدزمان کنونی: ۱۳۹۵/۰۹/۱۴، ۱۲:۱۲ ق.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: obj
آخرین ارسال: obj
پاسخ 9
بازدید 1075

رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#1
با سلام خدمت تموم اعضای سایت کلیدستان
مدتیه که دارم روی یک ماشین حساب اندرویدی کار میکنم
اما یه مشکل اساسی سر راهم قرار گرفته و اون این هستش که توی معادلات چطور به ماشین حساب بفهمون که کجا از اعداد اعشاری و کجا از اعداد صحیح استفاده کنه...
به عنوان مثال
اگر کاربر وارد کرد : 
2 + 3 ، چاپ بشه 5
و اگر کابر وارد کرد :
2 + 2.5 ، چاپ بشه 4.5
به صورت پیشرفته تر هم مثلا اگه کاربر وارد کرد 9 + Sin 9
چاپ بشه 9.156434
و بعد از این اگه وارد کرد 9 + 9.156434
چاپ بشه 18.156434
واضح تر بگم که میخوام ماشین حساب موقع خوندن کد ها بتونه اعداد صحیح و اعشاری رو با هم جمع یا ... کنه

اینو هم بگم که از همچین کدی توی کلید جمع +

کد پی‌اچ‌پی:
if (point == 1)
{
tt Double.parseDouble(text.getText().toString());
}
if (
point == 0)
{
tt2 Integer.parseInt(text.getText().toString());


و همچین کدی توی کلید مساوی = استفاده کردم ولی به نتیجه دلخواه نرسیدم... ، لطفا اگه چیزی راجع به این قضیه میدونید راهنمایی کنید، ممنون میشم ♥

کد پی‌اچ‌پی:
if (point == 1) {
switch (
sss) {
case 
'+':
pp Double.parseDouble(text.getText().toString());
vis pp tt;
text.setText(Double.toString(vis));
vis 0;
ash 0;
break;
}
}

if (
point == 0) {

switch (
sss) {
case 
'+':
pp2 Integer.parseInt(text.getText().toString());
vis2 pp2 tt2;
text.setText(Integer.toString(vis2));
vis2 0;
ash 0;
break;

}

پاسخ

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#2
خب علامت اعشار رو نقطه قرار بدید..یعنی وقتی کاربر در بین اعداد از کارکتر . استفاده کرد یعنی عدد اعشار وارد کرد..برای اینکار کافیه رشته رو بگیرید و یه حلقه بندازی روی طولش کارکتر به کارکتر چک کنه ببینه اگر نقطه بود.قسمت قبل نقطه رو جداکنه به عنوان مقدار صحیح و قسمت بعد نقطه میشه اعشار.توی دوتا متغییر بریز و بعد از تبدیل رشته به اعشار و بامقدار مورد نظر جمع کن و نمایش بده.ممکنه راه حل زیاد باشه ولی الان ساعت 4 حضور ذهن ندارم.
پاسخ
 سپاس شده توسط obj ، admin

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#3
(۱۳۹۴/۰۶/۱۸, ۰۵:۰۲ ق.ظ)داش بهروز نوشته: خب علامت اعشار رو نقطه قرار بدید..یعنی وقتی کاربر در بین اعداد از کارکتر . استفاده کرد یعنی عدد اعشار وارد کرد..برای اینکار کافیه رشته رو بگیرید و یه حلقه بندازی روی طولش کارکتر به کارکتر چک کنه ببینه اگر نقطه بود.قسمت قبل نقطه رو جداکنه به عنوان مقدار صحیح و قسمت بعد نقطه میشه اعشار.توی دوتا متغییر بریز و بعد از تبدیل رشته به اعشار و بامقدار مورد نظر جمع کن و نمایش بده.ممکنه راه حل زیاد باشه ولی الان ساعت 4 حضور ذهن ندارم.



 ببینید دوست عزیز
توی کد ها این رو هم نوشتم که اگه روی " . " کلیک شد متغیر point رو برابر یک قرار بده که از اعداد اعشار توی معادله استفاده بشه ولی خب به نتیجه ای نرسیدم...
بازم مرسی از شما ♥
دوستان دیگه اگه راه حلی بلدن لطفا راهنمایی کنن...
پاسخ

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#4
یعنی توی همچین انجمنی یک نفر هم پیدا نمیشه که منو راهنمایی کنه !!!؟ o_O
پاسخ

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#5
دوست عزیز بنده نمیفهمم مشکل شما چیه؟
اینکه میخواید یه عدد مثلا 2 با 4.5 جمع بشه
و نتیجه 6.5 نشون بده که مشکلی ندارد و انجام میشه..

بزارید با یک مثال بگم .برای راحتی کار شما فرض کنید دوتا edittext  دارید و شخص دوتا رشته عددی وارد میکنه و بعد روی دکمه میزنه نتیجه نشون داده میشه.
شما عدد اول رو از edittext به صورت رشته بگیرید به double تبدیل کنید بریزید داخل یک متغییر double.
عدد دوم هم همینطور بریزید داخل یک متغییر double.
بعد دوتا عدد با هم جمع کنید نتیجه رو داخل یک متغییر دیگه بریزید از جنس double بعد اون رو چاپ کنید.

کد پی‌اچ‌پی:
final TextView t1=(TextView)findViewById(R.id.textView1);
        final 
EditText e1=(EditText)findViewById(R.id.editText1);
        final 
EditText e2=(EditText)findViewById(R.id.editText2);
        
        
Button b1=(Button)findViewById(R.id.button);
        
b1.setOnClickListener(new OnClickListener() {
            
            @
Override
            
public void onClick(View v) {
                
// TODO Auto-generated method stub
                 
double x1=Double.parseDouble(e1.getText().toString());
                 
double x2=Double.parseDouble(e2.getText().toString());
                                  
double result=x1+x2;
                
t1.setText(Double.toString(result));
                
            }
        }); 

حالا واسه ماشین حساب هم همین طور فقط یکم فرق داره:

بستگی به ماشین حسابی داره که شما میخواید طراحی کنید .من فرض میکنم مثل ماشین حسابهای متداول ،اعداد و عملگر حساب به صورت یک رشته  برای کاربر نمایش داده میشود .

فرض کنید من اعداد 2.5 و 4 رو با هم میخوام جمع کنم.بعد از وارد کردن اعداد و علامت جمع :
رشته نمایش داده شده  به صورت   2.5 + 4   است..
واسه ادامه کار روشهای زیادی است.یه روش به اینصورت هست.
شما رشته رو کارکتر به کارکتر میخونید و داخل یک رشته s1 میریزید و این عمل تا جایی انجام میشه که برسید به عملگر حساب + .
حال باز کارکتر به کارکتر میخونید و بقیه رشته رو میریزید داخل s2.  دیگه ادامه کار راحت شد.مثل مثالی که زدم شد.شما دوتا رشته دارید .کافیه تبدیل به عدد کنید و جمع کنید.
درواقع ما رشته اصلی رو از جایی که علامت + هست شکوندیم و به دو رشته تبدیل کردید.

کد پی‌اچ‌پی:
double x1=Double.parseDouble(s1);
double x2=Double.parseDouble(s2);
double result=x1+x2

پاسخ
 سپاس شده توسط obj ، admin

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#6
مرسی از شما
تا اینجای کار کاملا درسته
فقط مشکل اصلی اینجاست که
وقتی از متغیر Double استفاده میکنم توی جواب
چه معادله وارد شده 2+2 باشه
چه معادله 1.5 + 1.5 باشه
یک مقدار " 0. " به اخر جواب اضافه میشه...
یعنی 4.0
و 3.0
در حالی که من میخوام وقتی اعداد وارد شده صحیح بودن یعنی همون 2+2 جواب رو به صورت 4 نمایش بده
و وقتی اعداد وارد شده اعشاری بودن هم در صورت نیاز جواب به صورت اعشاری (توی معادلات سینوسی) نمایش داده بشه وگرنه اگه مثل معادله بالا 1.5 + 1.5 بود جواب به صورت 3 نمایش داده بشه...
قبلن که برنامه های تحت ویندوز مینوشتم برای برنامه ای مثل ماشین حساب چه از Double و یا چه از Integer که استفاده میکردم خود برنامه تشخیص میداد کجاها جواب اعشار باشه و کجاها صحیح اما توی اندروید اینطور نیست...
پاسخ

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#7
خب از اول بهتر بود سوالتون دقیق میگفتید.
واسه این کار میشه از راه کار زیر استفاده کرد.با کمک از قانون زیر میتونید مشکل حل کنید.
مطمئنا عمل cast کردن رو میدونید..وقتی یک عدد double بخوایم بریزیم داخل یک متغییر  از نوع int  ،قسمت صحیح داخل متغیر int و قسمت اعشار ازبین میره.مثلا

کد پی‌اچ‌پی:
double d=3.54;
int  n=d

با دستور بالا مقدار 3 داخل متغییر n قرار میگیره.
خب با دونستن مطلب بالا میشه مشکل حل کرد.
فرض کنید نتیجه عمل جمع رو در متغیر res که از نوع double ذخیره کردید..ما نمیدونیم که عدد حاصل قسمت بعد اعشارش 0 هست یا عدد.
کافیه یک متغییر کمکی tmp از نوع int  تعریف کنید و مقدار res  داخلش بریزید.

کد پی‌اچ‌پی:
double res=x1+x2;

int tmp=int(res);//قسمت صحیح در داخل متغییر ریخته میشه. 

حالا برای تشخیص از دستور شرطی استفاده میکنیم

کد پی‌اچ‌پی:
if(res==tmp)
text.setText(Integer.toString(tmp));
else
text.setText(Double.toString(res)); 

یعنی اگر مقدار  res=3.0 باشد .مقداری که در داخل tmp  ریخته میشه 3 است.
پس شرط درست میشود و مقدار tmp چاپ میشود.
یا آگر مقدار  res=3.5  باشد .مقداری که در tmp ریخته میشه 3 است.
پس شرط درست نیست و مقدار res چاپ میشود.
سعی کردم کامل یه دیده درست بهتون بدم.
موفق باشید.
پاسخ
 سپاس شده توسط obj ، admin

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#8
یه دنیا ممنون 
لطف کردین 
پاسخ

مشکل در استفاده از متغیر های Double & Integer در ماشین حساب به زبان اندروید

#9
فقط یه نکته رو اشتباه نوشتین
اون هم این هستش که به جای 

کد پی‌اچ‌پی:
int tmp=int(res); 

باید نوشت

کد پی‌اچ‌پی:
int tmp = (int) res

اینو گفتم که دوستان ی که استفاده میبرن از این تاپیک با مشکل مواجه نشن 
پاسخ
 سپاس شده توسط داش بهروز ، admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)