CodeGym /בלוג Java /Random-HE /Java המרת Char ל-Int עם דוגמאות
John Squirrels
רָמָה
San Francisco

Java המרת Char ל-Int עם דוגמאות

פורסם בקבוצה
לעתים קרובות מידע סמלי שמשתמשים מכניסים מהמקלדת צריך להיות מומר למספרים או שמתכנת צריך לקבל ממנו מספרים. יש כמה שיטות ב-Java לעשות את זה. במאמר זה, נבין את השיטות שיעזרו לנו להמיר char לערך int.

העברת סוג מרומז

ליהוק סוג הוא תהליך של המרת ערך של סוג נתונים אחד לערך של סוג נתונים אחר. יציקת סוג יכולה להיות ידנית או אוטומטית בהתאם לסוגים. הסוגים צריכים להיות תואמים. בג'אווה יש לנו שני סוגים של שידור טיפוסי, מפורש ומרומז. אפשר לעשות מרומז רק אם נמיר את המשתנה מסוג "גדול" לסוג "קטן יותר" (נניח מ- int ל- long ). אם אנחנו רוצים להמיר משתנה מסוג char ל-int data type, לרוב אנחנו צריכים לקבל את הערך המקביל שלו מטבלת ASCII. לכל אלפבית או סמל שניתן להזין באופן דיגיטלי יש מספר שלם ייחודי מתאים. לדוגמה, לאלפבית 'A' יש קוד ASCII של 65. לפי סוג הליהוק, אנו ממירים בכוח את ערך התו לקוד שלם ASCII המקביל שלו. הנה הדוגמה שלנו ל-Java Char to int באמצעות ליהוק סוג.

דוגמה של Java char to 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);
       }
   }
הפלט הוא:
ערך ASCII של 'A' הוא 65 ערך ASCII של '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() פועל באופן דומה ל-Type Casting, אך במקום לעקוב אחר טבלת ASCII, הוא עוקב אחר תקן הקידוד Unicode. ASCII יכול לייצג רק קבוצה מסוימת של סמלים ותווים כגון אותיות לטיניות (בתוספת כמה סמלי האלפבית הלאומי), מספרים, סימני פיסוק ותווי בקרה. Unicode מכיל למעלה ממיליון ערכים המכילים אותיות וסמלים לכל שפה בעולם. לדוגמה, הערך של A ב-Unicode הוא \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);

       }
   }
הפלט הוא:
ערך Unicode של '7' הוא 7 ערך Unicode של 'A' הוא 10 ערך Unicode של '*' הוא -1

שימוש ב-ParseInt()

ParseInt() היא שיטה נוספת להמרת ה-char ל-int. זה גם בשימוש נרחב להמרה צולבת בין סוגי נתונים מספריים אחרים, כמו גם צף, כפול וארוך. ParseInt() דורש ארגומנט אחד לפחות ולכל היותר שני ארגומנטים. הארגומנט הראשון הוא שם המשתנה של הערך שאנו ממירים. הארגומנט השני הוא הרדיוס המתייחס לערך הבסיס של עשרוני, אוקטלי, הקסדצימלי וכו'. בשל היכולת של ParseInt() להמיר סוגי נתונים גם תוך מחשבה על מערכת המספרים, זוהי בחירה אופטימלית להמרת "מספרית "char to int ב-Java. יש שתי נקודות חשובות שכדאי לזכור אם ברצונך להשתמש בשיטה זו. שיטת parseInt() מקבלת ארגומנטים של String בלבד, אז תחילה עליך להמיר char לString (באמצעות String.valueOf ). אינך יכול להשתמש ב-parseInt() כדי להמיר את האלפביתים או סמלים אחרים מלבד ערכים מספריים המאוחסנים בסוג הנתונים char. אם תזין ערכים לא מספריים, תקבל שגיאה. הנה דוגמה של Java:
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.parseInt (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', נניח, השיטה פשוט תחזיר את ההפרש בין קודי ASCII של אפס לאות 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 א 17 * -6

מסקנות

אם אתה צריך להמיר char ל-int ב-Java השתמש באחת מהשיטות:
  • ליהוק סוג מרומז //קבלת ערכי ASCII
  • Character.getNumericValue()
  • Integer.parseInt() //בזוג עם String.valueOf())
  • הפחתת '0' // פועלת עבור ערכים מספריים שלמים בלבד
אתה יכול גם לבצע ליהוק סוג מפורש. עם זאת, זוהי פעולה מיותרת: אין בה צורך, אלא רק עובד בג'אווה.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION