View Full Version : کار با رشته ها
safari123
یک شنبه 26 آذر 1385, 12:09 عصر
سلام، تاپیک قبلی رو دوست عزیز zehs_sha (http://barnamenevis.org/forum/member.php?u=3493) پاک کرده بود هرچند تو اون تاپیک من حل مساله رو نخواستم من فقط راهنمایی خواستم (البته صادق بودن گاهی کار دست آدم می ده، تقصیر خودم که گفتم پروژه دانشجویی است)، حالا سوالم رو اینجوری می پرسم:
من می خوام یه برنامه بنویسم که چند تا رشته رو به صورت زیر بگیره :
Str: Name1 Name2 operator Name3
که Name3 میتونه یه عدد هم باشه، Name1 نمی تونه برابر کاراکتر X باشه و operator هم (+*/-) است
وقتی کاربر رشته ها رو وارد می کنه باید عمل جایگذاری انجام بشه مثلا اگه وارد می کنه:
wx*2
qw+3
px+q
باید قرار بده: w=x*2 و q=w+3 و p=x+q سپس جاگذاری کنه مثلا اگه دستور Show q رو بده باید چاپ کنه: 2x+3
من درمورد Validation رشته ها هیچ مشکلی ندارم فقط نمی دونم چطوری و از چه روشی باید جاگذاری رو انجام بدم.
javaphantom
یک شنبه 26 آذر 1385, 21:52 عصر
توی یک رشته آرایه از نوع string قرار شون بده وقتی validate کردی بعد از توی آرایه بخونشون البته من زیاد متوجه گیر شما نشودم
با swing کار می کنید؟
safari123
دوشنبه 27 آذر 1385, 07:45 صبح
مشکل من با اینه که میخوام یه رشته رو بر اساس متغیر x نشون بدم مثلا اگه رشته اول بود px+1 به صورت p=x+1 نشون بده و اگه رشته بود qx*p به صورت:
q=x*p=>q=x*(x+1)==>q=x^2+x
من با جایگذاری رشته ها و عملیاتی که باید روشون انجام بدم مشکل دارم در واقع می تونم به دست بیارم q=(x+1)*x اما نمی دونم چطوری باید q=x^2+x رو به دست بیارم.
hasina
دوشنبه 27 آذر 1385, 08:28 صبح
سلام دوست من.
می شه بگی چطور q=x^2+x رو از q=(x+1)*1 نتیجه گرفتی؟
javaphantom
دوشنبه 27 آذر 1385, 08:29 صبح
کاری نداره اول کل رشته گرفته شده را بصورت مجموعه ای از کاراکترها تبدیل کن. با method toCharArray البته قبلش با method length طول رشته وارد شده را باید بدست بیاری تا به اندازه اون طول بتونی حافظه ای از کاراکترهای آرایه ای در حافظه new کنی
حالا با داشتن یک حلقه مثل for می تونی از اولین خونه کاراکتر رشتت تا آخرین خونه رو کنترل کنی
معلومه اگر بخوای چیزی اون وسطا اضافه کنی باید به اندازه کاراکترهایی که میخوای اضافه بشه از قبل توی آرایه کاراکتری جا رزرو کنی
hasina
دوشنبه 27 آذر 1385, 08:49 صبح
کاری نداره اول کل رشته گرفته شده را بصورت مجموعه ای از کاراکترها تبدیل کن. با method toCharArray البته قبلش با method length طول رشته وارد شده را باید بدست بیاری تا به اندازه اون طول بتونی حافظه ای از کاراکترهای آرایه ای در حافظه new کنی
حالا با داشتن یک حلقه مثل for می تونی از اولین خونه کاراکتر رشتت تا آخرین خونه رو کنترل کنی
معلومه اگر بخوای چیزی اون وسطا اضافه کنی باید به اندازه کاراکترهایی که میخوای اضافه بشه از قبل توی آرایه کاراکتری جا رزرو کنی
اونطور که من متوجه شدم این دوستمون می خواد به جای حروف مثلا p عبارت معادلشو جایگزین کنه. حالا اگه به اندازه این رشته توی رشته حاصل جا رزرو نکنه می تونه با اضافه کردن رشته اولیه تا رسیدن به p و اضافه کردن عبارت معادل p و اضافه کردن بقیه رشته اول این کار رو بکه. که البته تو این قسمت هم مشکلی نداره!
safari123
دوشنبه 27 آذر 1385, 11:10 صبح
آیا می تونم آرایه ای تعریف کنم که index هاش یه رشته باشه؟ اگه آره چطوری؟
hasina
دوشنبه 27 آذر 1385, 11:56 صبح
رشته نه ولی کاراکتر بله. توی هر زبان برنامه نویسی بسته به چگونگی تعریف آرایه متفاوته. برای یک مثال ساده می شه پاسکال رو در نظر گرفت که به این صورته
x:array[a..z]of char
javaphantom
دوشنبه 27 آذر 1385, 12:37 عصر
String [] st= new String[100] yes الان شما آرایه ای تعریف کرده اید که هر کدوم از خانه های اون یک رشته در خود قرار می دهد. 100 رشته متفاوت در خود قرار می ده
sarasara
دوشنبه 27 آذر 1385, 13:14 عصر
به نظرم منظور Safari123 آرایه ای از رشته ها نیست بلکه آرایه ای ست که هر کدام از اندیس هاش یه رشته است مثلا arr["name"] یا arr["family'] که به نظر من همچین چیزی رو نداریم.
Mamdos
سه شنبه 28 آذر 1385, 22:12 عصر
آیا می تونم آرایه ای تعریف کنم که index هاش یه رشته باشه؟ اگه آره چطوری؟
نه دقیقا آرایه؛ باید از نگاشت (Map) استفاده کنید. مثال:
HashMap<String, String> map = new HashMap<String, String>();
map.put( "Iran", "Tehran" );
map.put( "France", "Paris" );
map.put( "Bangladesh", "Dhaka" );
System.out.println( map.get( "Bangladesh" ) ); // ٌWill return 'Dhaka'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.