ورود

View Full Version : مشکل با تبدیل String به boolean



hajilari
جمعه 01 تیر 1397, 11:33 صبح
سلام

من یک عبارت boolean دارم در حالت اول درست کار میکنه



a=true;
b=true;
c=false;
boolean z=(a^b)|c;


اما این عبارت رو بصورت String از کاربر میگیریم وقتی اونو به این حالت پیاده می کنم دیگه جواب نمیده و همیشه جوابش false هست


a=true;
b=true;
c=false;
String zOrginal="(a^b)|c";
boolean z= Boolean.parseBoolean(zOrginal);



دوستان ممنون میشم بهم بگید چه تغییری توی پیاده سازیم بدم

vahid-p
جمعه 01 تیر 1397, 18:16 عصر
عملکرد parseBoolean این نیست که عبارت رو براتون محاسبه کنه. چیزی که شما میخواید evaluation هست که برای اینکار نیاز هست یک مفسر ساده ای خودتون بسازید (البته قطعا کتابخونه هایی برای اینکار وجود داره). تو جاوا لااقل من ندیدم چنین چیزی به صورت پیشفرض باشه هر چند در برخی زبان ها وجود داره.
parseBoolean فقط عبارات رشته ای true (کوچک و بزرگ بودن حروف مهم نیست) رو به مقدار true (از نوع boolean) تبدیل میکنه و بقیه حالات رو false در نظر میگیره.

hajilari
جمعه 01 تیر 1397, 22:23 عصر
عملکرد parseBoolean این نیست که عبارت رو براتون محاسبه کنه. چیزی که شما میخواید evaluation هست که برای اینکار نیاز هست یک مفسر ساده ای خودتون بسازید (البته قطعا کتابخونه هایی برای اینکار وجود داره). تو جاوا لااقل من ندیدم چنین چیزی به صورت پیشفرض باشه هر چند در برخی زبان ها وجود داره.
parseBoolean فقط عبارات رشته ای true (کوچک و بزرگ بودن حروف مهم نیست) رو به مقدار true (از نوع boolean) تبدیل میکنه و بقیه حالات رو false در نظر میگیره.

ممنون میشم بیشتر راهنمایی کنید که از چه طریقی این رو پیاده سازی کنم
تشکر

farhad_shiri_ex
شنبه 02 تیر 1397, 05:00 صبح
ممنون میشم بیشتر راهنمایی کنید که از چه طریقی این رو پیاده سازی کنم
تشکر

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

hajilari
شنبه 02 تیر 1397, 08:58 صبح
جواب که کاملا واضح بود دوست عزیز
می تونید از یک کلاس Evaluation استفاده کنید خیلی ساده کارش اینه هست که رشته ای که شما بهش میدید مثل یک دستور برای شما تفسیر میکنه باید یک کتابخانه براش دانلود کنید چون زبان جاوا از Evaluator پشتیبانی نمیکنه فقط برای این کار کتابخانه زیاد هست حتما مستندات کتابخانه را مطالعه کنید تا مطمن باشید که کاری که شما می خواهید را براتون انجام میده یانه.!

من گشتم اما نتونستم پیدا کنم، ممنون میشم اگه شما میشناسید معرفی کنید.

unique2017
شنبه 02 تیر 1397, 10:13 صبح
جواب کاملا واضح و دقیق

vahid-p
شنبه 02 تیر 1397, 18:03 عصر
من گشتم اما نتونستم پیدا کنم، ممنون میشم اگه شما میشناسید معرفی کنید.
نمیدونم چطور سرچ زدید که پیدا نکردید. من اینو سرچ زدم evaluator library for java و انواع مختلفی پیدا کردم.
مثلا:
http://janino-compiler.github.io/janino
https://github.com/scireum/parsii
https://github.com/gianluca-nitti/java-expr-eval
و...
که بهتره بخونید و هر کدوم به کارتون اومد استفاده کنید. بازم هست، سرچ کنید و اونی که دقیقا چیزی که شما میخواید رو پشتیبانی میکنه رو استفاده کنید.