اشیاء رشته ای به صورت رشته ای از کاراکترها نمایش داده می شوند.
اگر در Java Swing کار کرده اید، دارای اجزایی مانند JTextField و JTextArea است که ما از آنها برای دریافت ورودی خود از رابط کاربری گرافیکی استفاده می کنیم که ورودی ما را به عنوان یک رشته می گیرد.
اگر بخواهیم با استفاده از Swing یک ماشین حساب ساده بسازیم، باید بفهمیم که چگونه یک رشته را به عدد صحیح تبدیل کنیم. این ما را به این سؤال هدایت می کند - چگونه می توانیم یک رشته را به یک عدد صحیح تبدیل کنیم؟
در جاوا می توانیم از ()Integer.valueOf و ()Integer.parseInt برای تبدیل رشته به عدد صحیح استفاده کنیم.
این متد رشته را به صورت یک نوع اولیه int برمی گرداند. اگر رشته حاوی یک عدد صحیح معتبر نباشد، یک NumberFormatException پرتاب می کند.
بنابراین، هر بار که یک رشته را به int تبدیل می کنیم، باید با قرار دادن کد در داخل بلوک try-catch، از این استثنا مراقبت کنیم.
بیایید مثالی از تبدیل رشته به int با استفاده از ()Integer.parseInt ببینیم :
String str = "25" try{ int number = Integer.parseInt(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }
حالا سعی می کنیم این کد را با وارد کردن یک عدد صحیح نامعتبر بشکنیم:
String str = "25T" try{ int number = Integer.parseInt(str); System.out.println(number); } catch (NumberFormatException ex){ ex.printStackTrace(); }
همانطور که در کد بالا مشاهده می کنید، ما سعی کرده ایم 25T را به عدد صحیح تبدیل کنیم. این یک ورودی معتبر نیست. بنابراین، باید یک NumberFormatException پرتاب کند.
این هم خروجی کد بالا:
java.lang.NumberFormatException: For input string: "25T"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.parseInt(Integer.java:615)
at OOP.StringTest.main(StringTest.java:51)
در مرحله بعد، نحوه تبدیل رشته به عدد صحیح را با استفاده از متد ()Integer.valueOf در نظر خواهیم گرفت.
این متد رشته را به عنوان یک شی Integer برمی گرداند. اگر به مستندات جاوا نگاه کنید، ()Integer.valueOf یک شی Integer را برمی گرداند که معادل new Integer(Integer.parseInt(s))
است.
هنگام استفاده از این روش، کد خود را در داخل بلوک try-catch قرار می دهیم.
اجازه دهید مثالی را با استفاده از متد Integer.valueOf در نظر بگیریم:
String str = "25" try{ Integer number = Integer.valueOf(str); System.out.println(number); // output = 25 } catch (NumberFormatException ex){ ex.printStackTrace(); }
حالا بیایید سعی کنیم کد بالا را با وارد کردن یک عدد صحیح نامعتبر بشکنیم:
String str = "25TA" try{ Integer number = Integer.valueOf(str); System.out.println(number); } catch (NumberFormatException ex){ ex.printStackTrace(); }
مشابه مثال قبلی، کد بالا یک استثنا ایجاد می کند.
این هم خروجی کد بالا:
java.lang.NumberFormatException: For input string: "25TA"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:580)
at java.lang.Integer.valueOf(Integer.java:766)
at OOP.StringTest.main(StringTest.java:42)
همچنین میتوانیم قبل از استفاده از روشهای ذکر شده، متدی ایجاد کنیم تا بررسی کنیم که آیا رشته ارسال شده عددی است یا خیر.
من یک روش ساده برای بررسی اینکه آیا رشته ارسال شده عددی است یا خیر ایجاد کرده ام.
public class StringTest { public static void main(String[] args) { String str = "25" String str1 = "25.06" System.out.println(isNumeric(str)); System.out.println(isNumeric(str1)); } private static boolean isNumeric(String str){ return str != null && str.matches("[0-9.]+"); } }
خروجی این است:
true
true
متد ()isNumeric یک رشته را به عنوان آرگومان می گیرد. ابتدا بررسی می کند که آیا null است یا خیر. پس از آن، از متد ()matches استفاده می کنیم تا بررسی کنیم که آیا دارای ارقام 0 تا 9 و یک کاراکتر نقطه است یا خیر.
این یک راه ساده برای بررسی مقادیر عددی است. میتوانید در Google برای regular expression پیشرفتهتر بنویسید یا جستجو کنید تا بسته به مورد استفاده خود، اعداد را ثبت کنید.
این بهترین روش است که قبل از تبدیل آن به عدد صحیح، بررسی کنید که آیا رشته ارسال شده عددی است یا خیر.
از خواندن شما سپاسگذارم.
کدنویسی مبارک !