در این مقاله، قصد داریم روش تبدیل رشته به عدد در جاوا را آموزش دهیم. در ادامه، نکاتی را پیرامون این موضوع متذکر می شویم و مثالی در قالب یک اپلیکیشن می زنیم و به طور عملی، نکاتی را آموزش می دهیم.
اگر یک رشته(String) مانند "649" کاملاً حاوی عدد باشد، می توانیم آن را از یک رشته به یک عدد تبدیل کنیم؛ تا از آن در محاسبات استفاده کنیم؛ یا مانند هر عدد دیگری، از آن استفاده کنیم. بعنوان مثال، فرض کنید از کاربر می خواهیم در یک جعبه ی مکالمه، یک دستمزد را وارد کند. وقتی که ما با استفاده از متد showInputDialog()
ورودی را دریافت کنیم، این مقدار همواره یک رشته است. برای اینکه بتوانیم از این مقدار در دستورات محاسباتی استفاده کنیم، باید این رشته را به یک عدد تبدیل کنیم.
نکته: وقتی که از هریک از متدهای شرح داده شده در این بخش، برای تبدیل یک رشته به یک عدد استفاده کنیم اما این رشته، یک عدد معتبر را به ما ارائه ندهد(بعنوان مثال اگر این عدد حاوی حروف باشد) یا اینکه رشته ی مورد نظر یک نوع عدد اشتباه را ارائه دهد(بعنوان مثال حاوی یک نقطه ی اعشار باشد اما به یک عدد صحیح تبدیل شده باشد) یک خطا به نام NumberFormatException تولید خواهد شد. در فصل "مدیریت خطاها" در مورد خطاها(exceptions) نکات بیشتری را خواهید آموخت.
برای تبدیل یک رشته(String) به یک عدد صحیح(integer) در جاوا می توانیم از کلاس Integer که بخشی از پکیج java.lang است و به طور اتوماتیک در برنامه هایی که می نویسیم، اضافه(import) می شود، استفاده کنیم. کلاس Integer یک مثال از یک کلاس بسته بندی(wrapper) است. کلاس wrapper یک کلاس یا آبجکت است که به دور یک المانِ(element) ساده تر، بسته بندی می شود. کلاس بسته بندی Integer، حاوی یک عدد صحیح ساده و متدهای مفیدی برای دستکاری آن می باشد.
شما قبلاً از متد parseInt()
استفاده کرده اید؛ این متد بخشی از کلاس Integer است. این متد، یک رشته(String) را در آرگومان خود دریافت می کند و مقدار صحیح(integer value) آن را برمی گرداند. بعنوان مثال، دستور int anInt = Integer.parseInt("649");
مقدار عددی 649 را در متغیر anInt ذخیره می کند. سپس ما می توانیم از این عدد صحیح، مانند دیگر عددهای صحیح، استفاده کنیم.
نکته: کلمه ی parse در زبان انگلیسی، به معنی "تجزیه کردن به اجزای تشکیل دهنده" است. مانند زمانی که یک جمله را تجزیه می کنیم. در جاوا، تجزیه(parse) کردن یک رشته ، یعنی درهم شکستن کاراکترهای آن به یک فرمت عددی.
نکته: می توانیم بگوییم که متد parseInt()
یک متد استاتیک(static) است، زیرا از آن به همراه نام کلاس(Integer) استفاده می شود و از آن یک آبجکت تهیه نمی کنیم.
به عنوان یک روش جایگزین، ما می توانیم از متد valueOf()
که به کلاس Integer تعلق دارد، برای تبدیل یک رشته به یک آبجکت از کلاس Integer استفاده کنیم، سپس می توانیم از متد intValue()
که به کلاس Integer تعلق دارد، برای استخراج یک عدد صحیح ساده از کلاس wrapper آن، استفاه کنیم. اپلیکیشن ConvertStringToInteger که در تصویر 7.10 قرار دارد، نشان می دهد که چگونه می توانیم این تبدیل را انجام دهیم.
وقتی که کاربر، یک رشته را در متد showInputDialog()
وارد می کند، این رشته در متغیر stringHours ذخیره می شود. سپس برنامه، با استفاده از متد valueOf()
این رشته را به یک آبجکتِ Integer تبدیل می کند و و از متد intValue()
برای استخراج عدد صحیح مورد نظر استفاده می کند. مثلاً هنگامی که کاربر مقدار "37" را بعنوان رشته وارد کند، این مقدار به یک عدد که می تواند در محاسبات ریاضی به کار رود، تبدیل می شود و خروجی همان طور که انتظار داشتیم نشان داده می شود. این خروجی در تصویر 7.11 نشان داده شده است.
(تصویر 7.10 : اپلیکیشن ConvertStringToInteger)
(تصویر 7.11 : اجرای نمونه ی اپلیکیشن ConvertStringToInteger)
این نیز ساده است که یک آبجکت رشته ای(String) را به یک مقدار double تبدیل کنیم. برای انجام این کار، شما باید از کلاس Double که مانند کلاس Integer، یک کلاس wrapper است و به طور اتوماتیک در برنامه ها اضافه(import) می شود، استفاده کنید. متد parseDouble()
که به کلاس Double تعلق دارد، یک آرگومان رشته ای را دریافت می کند و مقدار double آن را برمی گرداند. بعنوان مثال، دستور زیر، مقدار عددی 147.82 را در متغیر doubleValue ذخیره می کند.
double doubleValue = Double.parseDouble("147.82");
برای تبدیل رشته ی"147.82" به یک مقدار double، می توانید از کد زیر نیز استفاده کنید:
String stringValue = new String("147.82");
Double tempValue = Double.valueOf(stringValue);
double value = tempValue.doubleValue();
در این مثال، مقدار stringValue به متد Double.valueOf()
داده شده است که یک آبجکت Double را برمی گرداند. از متد doubleValue()
به همراه آبجکت tempValue استفاده شده است. این متد یک عدد ساده ی double که در یک مقدار ذخیره شده باشد، را برمی گرداند.
نکته: متدهای parseInt()
و parseDouble()
جدیدتر از متد valueOf()
هستند و بسیاری از برنامه نویسان ترجیح می دهند هنگام نوشتن اپلیکیشن های جدید، از آنها استفاده کنند.
نکته: علاوه بر کلاس های Double و Integer، دیگر کلاس های wrapper مانند Float و Long نیز متدهای valueOf()
را ارائه می دهند که رشته ها را به نوع های wrapper تبدیل می کند. علاوه بر این، این کلاس ها، به ترتیب، متدهای parseFloat()
و parseLong()
را نیز ارائه می دهند.
دو عبارت صحیح و یک عبارت اشتباه
موضوع: تبدیل رشته ها به عدد
- کلاس های Integer و Double، کلاس wrapper هستند.
- مقدار
Integer.parseInt("22.22")
برابر با 22.2 است. - مقدار
Double.parseDouble("22.22")
برابر با 22.22 است.
پاسخ:
عبارت شماره 2 اشتباه است. دستور Integer.parseInt("22.22")
کار نمی کند، زیرا آرگومان رشته ای به کار رفته در متد parseInt()
نمی تواند به یک عدد صحیح(integer) تبدیل شود.