CodeGym /จาวาบล็อก /สุ่ม /Java แปลง Char เป็น Int พร้อมตัวอย่าง
John Squirrels
ระดับ
San Francisco

Java แปลง Char เป็น Int พร้อมตัวอย่าง

เผยแพร่ในกลุ่ม
บ่อยครั้งที่ข้อมูลเชิงสัญลักษณ์ที่ผู้ใช้ป้อนจากแป้นพิมพ์จำเป็นต้องแปลงเป็นตัวเลข มิฉะนั้นโปรแกรมเมอร์ควรได้รับตัวเลขจากข้อมูลนั้น มีบางวิธีใน Java ที่จะทำ ในบทความนี้ เราจะหาวิธีที่จะช่วยเราแปลงถ่านเป็นค่า int

การแคสต์ประเภทโดยนัย

Type Casting เป็นกระบวนการแปลงค่าของประเภทข้อมูลหนึ่งเป็นค่าของประเภทข้อมูลอื่น การหล่อประเภทอาจเป็นแบบแมนนวลหรือแบบอัตโนมัติขึ้นอยู่กับประเภท ประเภทควรเข้ากันได้ ใน Java เรามี typecasting สองประเภท คือแบบชัดแจ้งและโดยนัย Implicit สามารถทำได้ก็ต่อเมื่อเราแปลงตัวแปรจากประเภท "ใหญ่ขึ้น" เป็น "เล็กลง" (เช่น จากintเป็นlong). หากเราต้องการแปลงตัวแปรประเภท char เป็นประเภทข้อมูล int บ่อยครั้งเราต้องรับค่าที่เทียบเท่าจากตาราง ASCII ตัวอักษรหรือสัญลักษณ์ทุกตัวที่สามารถป้อนแบบดิจิทัลได้จะมีเลขจำนวนเต็มเฉพาะที่สอดคล้องกัน ตัวอย่างเช่น ตัวอักษร 'A' มีรหัส ASCII เท่ากับ 65 เรากำลังแปลงค่าอักขระให้เป็นรหัสเลขจำนวนเต็ม ASCII ที่เทียบเท่ากัน นี่คือตัวอย่าง Java char to int ของเราโดยใช้การหล่อแบบ

ตัวอย่าง Java 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);
       }
   }
ผลลัพธ์คือ:
ค่า 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()ทำงานคล้ายกับการแคสต์ประเภท แต่แทนที่จะทำตามตาราง 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()เป็นอีกวิธีหนึ่งในการแปลงถ่านเป็น int นอกจากนี้ยังใช้กันอย่างแพร่หลายในการแปลงข้ามระหว่างประเภทข้อมูลตัวเลขอื่นๆ เช่น เลขทศนิยม เลขคู่ และเลขยาว ParseInt()ต้องการอย่างน้อยหนึ่งอาร์กิวเมนต์และมากที่สุดสองอาร์กิวเมนต์ อาร์กิวเมนต์แรกคือชื่อตัวแปรของค่าที่เรากำลังแปลง อาร์กิวเมนต์ที่สองคือ Radix ซึ่งอ้างอิงถึงค่าฐานของทศนิยม เลขฐานแปด เลขฐานสิบหก ฯลฯ เนื่องจากความสามารถของParseInt()ในการแปลงชนิดข้อมูลโดยคำนึงถึงระบบตัวเลขด้วย จึงเป็นตัวเลือกที่เหมาะสมที่สุดสำหรับการแปลง "ตัวเลข ” ถ่านเป็น int ใน Java มีสองประเด็นสำคัญที่ควรทราบหากคุณต้องการใช้วิธีนี้ แยกวิเคราะห์ ()วิธีการยอมรับอาร์กิวเมนต์ของสตริงเท่านั้น ดังนั้นคุณควรแปลงถ่านเป็นสตริงก่อน (โดยใช้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' // ใช้ได้กับค่าตัวเลขที่เป็นจำนวนเต็มเท่านั้น
คุณยังสามารถทำการแคสต์ประเภทที่ชัดเจนได้อีกด้วย อย่างไรก็ตาม นี่เป็นการดำเนินการซ้ำซ้อน: ไม่จำเป็น แต่ใช้งานได้ใน Java

อ่านเพิ่มเติม:

ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION