CodeGym /وبلاگ جاوا /Random-FA /جاوا تبدیل Char به Int با مثال
John Squirrels
مرحله
San Francisco

جاوا تبدیل Char به Int با مثال

در گروه منتشر شد
اغلب اطلاعات نمادینی که کاربران از صفحه کلید وارد می کنند باید به عدد تبدیل شوند یا یک برنامه نویس باید اعداد را از آن دریافت کند. روش هایی در جاوا برای انجام آن وجود دارد. در این مقاله، روش هایی را برای کمک به تبدیل char به مقدار int کشف خواهیم کرد.

کاستینگ نوع ضمنی

نوع ریخته گری فرآیند تبدیل مقدار یک نوع داده به مقدار نوع داده دیگر است. بسته به نوع ریخته‌گری می‌تواند دستی یا خودکار باشد. انواع باید با هم سازگار باشند. در جاوا ما دو نوع تایپ کست، صریح و ضمنی داریم. ضمنی تنها در صورتی انجام می شود که متغیر را از نوع "بزرگتر" به "کوچکتر" تبدیل کنیم (مثلاً از int به طولانی ). اگر بخواهیم یک متغیر از نوع char را به نوع داده int تبدیل کنیم، اغلب باید مقدار معادل آن را از جدول ASCII دریافت کنیم. هر الفبا یا نمادی که می توان به صورت دیجیتال وارد کرد دارای یک عدد صحیح منحصر به فرد مربوطه است. به عنوان مثال، الفبای "A" دارای کد اسکی 65 است. با نوع ریخته گری، ما به اجبار مقدار کاراکتر را به کد عدد صحیح اسکی معادل آن تبدیل می کنیم. در اینجا مثال جاوا char به int با استفاده از نوع ریخته گری است.

مثال جاوا char به int (با استفاده از typeCasting)

package charToInt;

public class Implicit {

       public static void main(String[] args) {
           char char1 = 'A';
           char char2 = 'a';
           int x = char1;
           int y = char2;

           System.out.println("ASCII value of '" + char1 + "' is " + x);
           System.out.println("ASCII value of '" + char2 + "' is " + y);
       }
   }
خروجی این است:
مقدار اسکی 'A' 65 است مقدار اسکی 'a' 97 است

ریخته گری نوع صریح

همانطور که در بالا دیدیم، در مورد تبدیل char به int، انجام این کار به صراحت لازم نیست، زیرا 2 بایت برای ذخیره char و 4 بایت برای ذخیره int استفاده می شود. یعنی نوع int «بزرگتر» است. با این وجود، به عنوان یک تمرین، می توانیم به صراحت یک متغیر char را به یک عدد صحیح وارد کنیم. برای این عملیات در پرانتز (int) را ذکر می کنیم.
package charToInt;

public class Explicit {

       public static void main(String[] args) {
           char char1 = 'A';
           System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
       }
   }
خروجی این است:
مقدار ASCII 'A' 65 است

استفاده از getNumericValue()

getNumericValue() به طور مشابه با نوع ریختن کار می کند، اما به جای پیروی از جدول ASCII، از استاندارد رمزگذاری یونیکد پیروی می کند. ASCII فقط می تواند مجموعه خاصی از نمادها و کاراکترها مانند حروف لاتین (به علاوه برخی از نمادهای الفبای ملی)، اعداد، علائم نقطه گذاری و کاراکترهای کنترل را نشان دهد. یونیکد حاوی بیش از یک میلیون مقدار حاوی حروف و نمادها برای هر زبان در جهان است. به عنوان مثال، مقدار A در یونیکد \u0041 است که معادل مقدار عددی 10 است. اگر کاراکتر مقدار عددی نداشته باشد، روش -1 را برمی‌گرداند. استفاده از این روش می تواند برای برگرداندن اعداد صحیح غیر منفی راحت باشد.
package charToInt;

public class UsingGetNumericValue {

       public static void main(String[] args) {
           char char1 = '7';
           char char2 = 'A';
           char char3 = '*';

           int x = Character.getNumericValue(char1);
           int y = Character.getNumericValue(char2);
           int z = Character.getNumericValue(char3);

           System.out.println("The Unicode value of '" + char1 + "' is " + x);
           System.out.println("The Unicode value of '" + char2 + "' is " + y);
           System.out.println("The Unicode value of '" + char3 + "' is " + z);

       }
   }
خروجی این است:
مقدار یونیکد '7' 7 است مقدار یونیکد 'A' 10 است مقدار یونیکد '*' 1- است.

استفاده از ParseInt()

ParseInt() روش دیگری برای تبدیل char به int است. همچنین به طور گسترده ای برای تبدیل متقابل بین انواع داده های عددی دیگر مانند شناور، دوبل و طولانی استفاده می شود. ParseInt () به حداقل یک آرگومان و حداکثر به دو آرگومان نیاز دارد. اولین آرگومان نام متغیر مقداری است که در حال تبدیل آن هستیم. آرگومان دوم رادیکس است که به مقدار پایه اعشاری، اکتال، هگزادسیمال و غیره اشاره دارد. با توجه به توانایی ParseInt() برای تبدیل انواع داده ها با در نظر گرفتن سیستم اعداد، یک انتخاب بهینه برای تبدیل عددی است. ” char به int در جاوا. اگر می خواهید از این روش استفاده کنید دو نکته مهم وجود دارد که باید در نظر داشته باشید. متد parseInt فقط آرگومان های String را می پذیرد، بنابراین ابتدا باید char را به String تبدیل کنید (با استفاده از String.valueOf ). شما نمی توانید از parseInt() برای تبدیل حروف الفبا یا سایر نمادها به جز مقادیر عددی ذخیره شده در نوع داده char استفاده کنید. اگر مقادیر غیر عددی وارد کنید، با خطا مواجه خواهید شد. در اینجا یک مثال جاوا است:
package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = '7';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
خروجی این است:
7
بیایید سعی کنیم از مقدار غیر عددی parseInt ton استفاده کنیم:
package charToInt;

public class ParseInt {
       public static void main(String args[]){
           char ch = 'q';
           int n = Integer.parseInt(String.valueOf(ch));
           System.out.println(n);
       }
   }
خروجی این است:
استثنا در رشته "main" java.lang.NumberFormatException: برای رشته ورودی: "q" در java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68) در java.base/java.lang.Integer (Integer.java:652) در java.base/java.lang.Integer.parseInt(Integer.java:770) در charToInt.ValueOf.main(ValueOf.java:6)

تفریق "0"

یک راه بسیار ساده برای تبدیل یک کاراکتر به یک عدد صحیح وجود دارد. برای این کار کافی است مقدار ASCII کاراکتر "0" را از کاراکتر کم کنید. به عنوان مثال، برای دریافت int 7 از کاراکتر "7":
int intValue = '7'-' 0 ';
توجه داشته باشید که این برای گرفتن مقادیر int منحصراً برای کاراکترهای عدد صحیح کار می کند! اگر «0» را از مثلاً «A» کم کنید، روش به سادگی تفاوت بین کدهای اسکی صفر و حرف A را برمی گرداند. در اینجا یک مثال آورده شده است.
package charToInt;

public class SubtractingZero {

   public static void main(String[] args) {
       char char1 = '7';
       char char2 = 'A';
       char char3 = '*';

       System.out.println(char1);
       System.out.println(char1 - '0');

       System.out.println(char2);
       System.out.println(char2 - '0');

       System.out.println(char3);
       System.out.println(char3 - '0');

   }

}
خروجی این است:
7 7 A 17 * -6

نتیجه گیری

اگر نیاز به تبدیل char به int در جاوا دارید از یکی از روش های زیر استفاده کنید:
  • ریخته گری نوع ضمنی //دریافت مقادیر ASCII
  • Character.getNumericValue()
  • Integer.parseInt() //در جفت با String.valueOf())
  • تفریق '0' // فقط برای مقادیر عددی صحیح کار می کند
همچنین می توانید ریخته گری نوع صریح را انجام دهید. با این حال، این یک عملیات اضافی است: به آن نیاز نیست، اما فقط در جاوا کار می کند.
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION