Khá thường xuyên, thông tin mang tính biểu tượng mà người dùng nhập từ bàn phím cần được chuyển đổi thành số hoặc lập trình viên sẽ lấy số từ đó. Có một số phương pháp trong Java để làm điều đó. Trong bài viết này, chúng tôi sẽ tìm ra các phương pháp giúp chúng tôi chuyển đổi giá trị char thành int.
Truyền kiểu ẩn
Truyền kiểu là quá trình chuyển đổi một giá trị của một kiểu dữ liệu thành một giá trị của một kiểu dữ liệu khác. Kiểu truyền có thể là thủ công hoặc tự động tùy thuộc vào loại. Các loại phải tương thích. Trong Java, chúng ta có hai kiểu đánh máy, tường minh và ẩn ý. Ẩn chỉ có thể được thực hiện nếu chúng ta chuyển đổi biến từ loại "lớn hơn" thành loại "nhỏ hơn" (giả sử, từ int sang long). Nếu chúng ta muốn chuyển đổi một biến kiểu char thành kiểu dữ liệu int, thông thường chúng ta cần lấy giá trị tương đương của nó từ bảng ASCII. Mỗi bảng chữ cái hoặc ký hiệu có thể được nhập bằng kỹ thuật số đều có một số nguyên duy nhất tương ứng. Ví dụ: bảng chữ cái 'A' có mã ASCII là 65. Bằng cách truyền kiểu, chúng tôi chuyển đổi mạnh giá trị ký tự thành mã số nguyên ASCII tương đương của nó. Đây là ví dụ Java char to int của chúng tôi bằng cách sử dụng kiểu truyền.Ví dụ Java char thành int (sử dụng 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);
}
}
Đầu ra là:
Giá trị ASCII của 'A' là 65
Giá trị ASCII của 'a' là 97
đúc kiểu rõ ràng
Như chúng ta đã thấy ở trên, trong trường hợp chuyển đổi từ char sang int, không cần thiết phải thực hiện điều này một cách rõ ràng, vì 2 byte được sử dụng để lưu trữ char và 4 byte được sử dụng để lưu trữ int. Đó là, kiểu int là "lớn hơn". Tuy nhiên, như một bài tập, chúng ta có thể chuyển một biến char thành một số nguyên một cách rõ ràng. Đối với hoạt động này, chúng tôi đề cập đến (int) trong ngoặc đơn.
package charToInt;
public class Explicit {
public static void main(String[] args) {
char char1 = 'A';
System.out.println("ASCII value of '" + char1 + "' is " + (int)char1);
}
}
Đầu ra là:
Giá trị ASCII của 'A' là 65
Sử dụng getNumericValue()
getNumericValue() hoạt động tương tự như truyền kiểu, nhưng thay vì tuân theo bảng ASCII, nó tuân theo tiêu chuẩn mã hóa Unicode. ASCII chỉ có thể đại diện cho một tập hợp các ký hiệu và ký tự cụ thể, chẳng hạn như chữ cái Latinh (cộng với một số ký hiệu bảng chữ cái quốc gia), số, dấu chấm câu và ký tự điều khiển. Unicode chứa hơn một triệu giá trị chứa các chữ cái và ký hiệu cho mọi ngôn ngữ trên thế giới. Ví dụ: giá trị của A trong Unicode là \u0041 tương đương với giá trị số là 10. Nếu ký tự không có giá trị số, phương thức sẽ trả về -1. Sử dụng phương pháp này có thể thuận tiện để trả về các số nguyên không âm.
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);
}
}
Đầu ra là:
Giá trị Unicode của '7' là 7
Giá trị Unicode của 'A' là 10
Giá trị Unicode của '*' là -1
Sử dụng ParseInt()
ParseInt() là một phương pháp khác để chuyển đổi char thành int. Nó cũng được sử dụng rộng rãi để chuyển đổi chéo giữa các loại dữ liệu số khác, chẳng hạn như float, double và long. ParseInt() yêu cầu ít nhất một đối số và nhiều nhất là hai đối số. Đối số đầu tiên là tên biến của giá trị chúng tôi đang chuyển đổi. Đối số thứ hai là cơ số đề cập đến giá trị cơ bản của thập phân, bát phân, thập lục phân, v.v. Do ParseInt() có khả năng chuyển đổi các loại dữ liệu có lưu ý đến hệ thống số, đây là lựa chọn tối ưu để chuyển đổi “số ” char thành int trong Java. Có hai điểm quan trọng cần lưu ý nếu bạn muốn sử dụng phương pháp này. parseInt()phương thức chỉ chấp nhận các đối số Chuỗi, vì vậy trước tiên bạn nên chuyển đổi char thành Chuỗi (sử dụng String.valueOf ). Bạn không thể sử dụng parseInt() để chuyển đổi bảng chữ cái hoặc các ký hiệu khác ngoại trừ các giá trị số được lưu trữ trong kiểu dữ liệu char. Nếu bạn nhập các giá trị không phải là số, bạn sẽ gặp lỗi. Đây là một ví dụ 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);
}
}
Đầu ra là:
7
Hãy thử sử dụng parseInt tấn giá trị không phải là số:
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);
}
}
Đầu ra là:
Ngoại lệ trong chuỗi "chính" java.lang.NumberFormatException: Đối với chuỗi đầu vào: "q"
tại java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:68)
tại java.base/java.lang.Integer.parseInt(Integer.java:652)
tại java.base/java.lang.Integer.parseInt(Integer.java:770)
tại charToInt.ValueOf.main(ValueOf.java:6)
Trừ '0'
Có một cách rất đơn giản để chuyển đổi một ký tự thành một số nguyên. Để thực hiện việc này, chỉ cần trừ giá trị ASCII của ký tự "0" khỏi ký tự đó. Ví dụ: để lấy int 7 từ ký tự "7":
int intValue = '7'-' 0 ';
Lưu ý rằng điều này hoạt động để nhận các giá trị int dành riêng cho các ký tự số nguyên! Nếu bạn trừ '0' khỏi, chẳng hạn như 'A', thì phương thức này sẽ chỉ trả về sự khác biệt giữa mã ASCII của số 0 và chữ A. Đây là một ví dụ.
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');
}
}
Đầu ra là:
7
7
A
17
*
-6
kết luận
Nếu bạn cần chuyển đổi char thành int trong Java, hãy sử dụng một trong các phương thức:- Truyền kiểu ẩn // nhận các giá trị ASCII
- Character.getNumericValue()
- Integer.parseInt() // theo cặp với String.valueOf())
- Phép trừ '0' // chỉ có tác dụng với các giá trị số nguyên
GO TO FULL VERSION